为什么这个代码的结果会输出两遍#include<stdio.h> int main(){ int i=0,k=0,s; char ch[80]; while((ch[k]=getchar())!='\n') k++; ch[k]='\n'; s=k; for(k=0;k<s/2;k++){ if(ch[k]!=ch[s-1-k]){ for(int i=0;i<s;i++) printf("%c",ch[i]); printf("\n"); printf("No"); } else(ch[k]==ch[s-1-k]);{ for(i=0;i<s;i++) printf("%c",ch[i]); printf("\n"); printf("Yes"); } }return 0; }
时间: 2024-03-26 12:39:32 浏览: 59
这个代码会输出两遍结果是因为在程序中,判断回文字符串的循环中,当检测到输入的字符串不是回文字符串时,程序会输出 "No" 并退出循环。但是,程序并没有在退出循环后结束程序,而是继续执行下面的代码,也就是输出一遍字符串和 "No",然后再输出一遍字符串和 "Yes"。
为了解决这个问题,可以在输出 "No"(或 "Yes")后立即使用 return 0; 语句结束程序,以避免重复输出结果。修改后的代码如下:
```
#include<stdio.h>
int main(){
int i=0,k=0,s;
char ch[80];
while((ch[k]=getchar())!='\n')
k++;
ch[k]='\n';
s=k;
for(k=0;k<s/2;k++){
if(ch[k]!=ch[s-1-k]){
printf("%s\n", ch);
printf("No\n");
return 0;
}
else(ch[k]==ch[s-1-k]);{
printf("%s\n", ch);
printf("Yes\n");
return 0;
}
}
return 0;
}
```
这样,程序就只会输出一遍结果了。
阅读全文