注:笔者在刷题目的时候,遇到了一个较为简单的密码翻译题,写出来后,发现提示未在规定时间内运行结束。
题目:

第一次提交的代码:
#include <stdio.h>
#define N 80
int main(){
char str[N];
int k;
gets(str);
while(str[k]!='\0'){
if(str[k]>='a'&&str[k]<='y'){
str[k]++;
}else if(str[k]>='A'&&str[k]<='Y'){
str[k]++;
}else if(str[k]=='z'){
str[k]='a';
}else if(str[k]=='Z'){
str[k]='A';
}
}
k++;
puts(str);
return 0;
}
出现提示:

讲 while循环改为for循环之后:
代码
#include <stdio.h>
#define N 80
int main(){
char str[N];
int k;
gets(str);
for(k=0;k<N;k++){
if(str[k]>='a'&&str[k]<='y'){
str[k]++;
}else if(str[k]>='A'&&str[k]<='Y'){
str[k]++;
}else if(str[k]=='z'){
str[k]='a';
}else if(str[k]=='Z'){
str[k]='A';
}
}
puts(str);
return 0;
}
提示:

总结:对于已知循环次数的情况 我们应当采取 for循环 更为高效 ;
对于未知循环次数的情况,就采用while循环。
网友评论