请问为什么以下代码无法判断是否为回文字符串 1 #include <stdio.h> 2 #include <string.h> 3 4 int main(void) 5 { 6 char str[100]; 7 printf("输入一个字符串:"); 8 scanf("%s",str); 9 10 int len = strlen(str); 11 12 int isplindorme = 1; 13 14 for(int i = 0;i < len;i++) 15 { 16 for(int j = len-1;j>=0;j--) 17 { 18 if(str[i] != str[j]) 19 { 20 isplindorme = 0; 21 }break; 22 } 23 } 24 if(isplindorme) 25 { 26 printf("Yes"); 27 } 28 else 29 { 30 printf("No"); 31 } 32 return 0; 33 }
时间: 2024-02-14 19:29:42 浏览: 70
这段代码无法判断是否为回文字符串的原因是在内层循环中没有正确判断字符是否相等。在第18行,当找到不相等的字符时,应该将`isplindorme`设置为0,然后跳出内层循环,并不是每次都要设置为0。修复后的代码如下所示:
```c
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
printf("输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int isplindorme = 1;
for (int i = 0; i < len; i++)
{
for (int j = len - 1; j >= 0; j--)
{
if (str[i] != str[j])
{
isplindorme = 0;
break; // 修复此处的位置
}
}
}
if (isplindorme)
{
printf("Yes");
}
else
{
printf("No");
}
return 0;
}
```
修复后的代码在找到不相等的字符后会立即跳出内层循环,然后进行下一个字符的比较。这样就可以正确判断是否为回文字符串了。
阅读全文