C语言问题:这道代码错在哪里,详细解答

2025-12-14 07:35:33
推荐回答(4个)
回答1:

for(i=0;i这里末尾不能加;,加了就表示这是一个完整的循环,后面的语句和这个循环没关系了.

while也是个循环,你这里应该用if

数组在调用时只要数组名就行了,把printf里面的a[N]改成a

正确代码如下:
#include
#include
#define N 100
main()
{
int i=0,b=0,c=0;
char a[N]="";
gets(a);
b=strlen(a);
for(i=0;iif(a[i]!=a[b-i-1]) //if
{
printf("%s不是回文",a);//a
break;
}
printf("%s是回文",a);
printf("\n");
}

回答2:

strlen返回的是字符串的长度,
实际的数组a[]里的内容长度要多加1,因为有一个字符串结尾符'\0'
你看一下,是不是这个没有考虑进去

也就是说
不是a[i]!=a[b-i-1]
而是a[i]!=a[b-i]

回答3:

#include
#include
#define N 100
main()
{
int i=0,b=0,c=0;
char a[N]="";
gets(a);
b=strlen(a);
for(i=0;iif(a[i]!=a[b-i-1])
{
printf("%s不是回文\n",a);
return;
}
printf("%s是回文",a);
printf("\n");
}

//错了,应该改成这样

回答4:

printf("%s是回文",a);