为什么无法输出?(格式在粘贴时发生了变化)

#include
using namespace std;
int main()
{
int n,b,sum,i;
char a[100];
scanf("%d",&n);
getchar();
while(n!=0){
b=0;
for(i=1;i!=0;i++){
scanf("%s",&a[i]);
if(a[i]=='\n')
i = 0;
}
for(b=1;b<=i;b++){
if(a[b]==a[i-b+1])
sum++;
}

    n--;
}
if(sum!=i){
    printf("no\n");
    break;
}

if(sum==i){
    printf("yes\n");
    breaks;
}

return 0;

}

for(i=1;i!=0;i++){
scanf("%s",&a[i]);
if(a[i]=='\n')
i = 0;
}
这会死循环的。你设置i=0不行,因为循环结束后,会执行for循环的i++,使得i变为1,满足i!=0条件。
你直接break跳出循环就可以了啊。如果非得这么搞,那么i=-1才行。根据代码逻辑,这里你应该用break;
scanf("%s",&a[i]); 改成scanf("%c",&a[i]);

第二个,scanf那,
你想输入字符串,用%s输入,直接写这个数组名就行了。
想输入字符,用%c输入,取元素的地址

for(i=1;i!=0;i++){
这个for循环里scanf不接收回车符改用a[i]=getchar()。记得收入完毕后来一句a[i]='\0'

img


综合三位的建议,我改了一下,现在的问题是输出的恒为no,请问还应当怎样改啊?

img


这是题目