#include <stdio.h> #include <string.h> #define Max_len 100 int main(){ char str[Max_len]; int len = strlen(str); scanf("%s",&str); bool flag = true; for(int i=0,j=len-1; i<len/2; i++,j--){ if(str[i] != str[j]) { flag = false; break; } } if(flag){ printf("是回文"); } else{ printf("不是回文"); } return 0; }为什么判断不出回文
时间: 2023-12-04 17:03:16 浏览: 113
c语言函数库-第一章(C标准库).doc
你的代码中,首先计算了字符串的长度,但是此时字符串还没有被输入,因此计算的长度为0,导致后面的判断不起作用。应该先输入字符串,再计算长度。另外,在使用scanf函数输入字符串时,不需要使用&符号,因为数组名本身就可以作为指针使用。
以下是修改后的代码:
```
#include <stdio.h>
#include <string.h>
#define Max_len 100
int main() {
char str[Max_len];
scanf("%s", str);
int len = strlen(str);
bool flag = true;
for(int i = 0, j = len - 1; i < len / 2; i++, j--) {
if(str[i] != str[j]) {
flag = false;
break;
}
}
if(flag) {
printf("是回文");
} else {
printf("不是回文");
}
return 0;
}
```
注意:此代码只适用于判断单词级别的回文,如果要判断句子或段落级别的回文,还需要去除空格和标点符号。
阅读全文