#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'