#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char s[80]; char a[80]; fgets(s,80,stdin); int i,j; j=strlen(s); for(i=0,j=strlen(s);i<j;j--,i++) { s[j]=a[i]; } for(i=0;i<j;i++) { if(a[i]=s[j]) { printf("no"); return 0; } } printf("yes"); return 0; } 为什么输出结果都是no
时间: 2024-03-22 09:39:24 浏览: 52
这段代码的问题在于,它没有正确地实现字符串反转和比较。具体来说,以下是可能导致输出结果都是no的原因:
1. 在`for`循环中,`s[j]`应该是字符串`s`中第`j-1`个字符,而不是`s`的第`j`个字符。因此,`s[j]`应该改为`s[j-1]`。
2. 字符串反转后,变量`s`中存储的是反转后的字符串,而变量`a`中存储的是原始字符串。在比较两个字符串时,应该使用`s`和`a`中的相同位置的字符进行比较,而不是使用`a[i]=s[j]`这个语句将`s[j]`的值赋给`a[i]`。
3. 在比较两个字符串时,应该使用`==`运算符进行比较,而不是使用`=`运算符进行赋值。因此,`if(a[i]=s[j])`应该改为`if(a[i]==s[j])`。
以下是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char s[80];
char a[80];
fgets(s, 80, stdin);
int i, j;
j = strlen(s) - 1; // 去掉换行符
for (i = 0; i < j; j--, i++) {
a[i] = s[j - 1];
}
for (i = 0; i < j; i++) {
if (a[i] != s[i]) { // 使用 != 进行比较
printf("no");
return 0;
}
}
printf("yes");
return 0;
}
```
阅读全文