#define MAX 100
int main()
{
int i,n,ch = 1, flag = 1;
char str[MAX];
while(ch == 1){
printf("\t\t请输入一串字符:");
gets(str);
for(i = 0; str[i] != '\0'; i++)
;
for(n = 0; n < i; n++)
if(str[n] != str[i-n-1])
flag = 0;
if(flag == 1){
printf("\n\n\t\t字符串:[");
printf("%s", str);
printf("]是回文!");
}else
printf("\n\n\t\t字符串:[%s]不是回文!", str);
printf("\n\n是否继续:1 是; 2 否 \n");
printf("请选择:");
scanf("%d", &ch);
}
getch();
return 0;
}
9 个解决方案
#1
}else{//缺了个{
printf("\n\n\t\t字符串:[%s]不是回文!", str);
printf("\n\n是否继续:1 是; 2 否 \n");
printf("请选择:");
scanf("%d", &ch);
}
#2
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
#3
这样while也缺少了{,乱拉!
#4
你没仔细看吧!
#5
不好意思,我看不懂...都没见过...
#6
哦,我看错了,呵呵。最好用插入源代码,那样有格式。
在scanf后加上一个getchar();获取'\n'
在scanf后加上一个getchar();获取'\n'
#7
百度一下
#8
插入源代码,代码容易看点
#9
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin) 原因为scanf的机制,它从来都是从输入缓冲区内读取数据,而不是从键盘!标准输入是从键盘输入到输入缓冲区中。当第一次调用scanf后,除了输入了正确的数据外,我们还输入了回车符,下一次调用scanf,会读取输入缓冲区内的回车符,而不会理睬你从键盘输入的数据(通常输入字符的话,你也输不了,它认为你输过了),所以错误!fflush(stdin)或rewind(stdin) 不过好像这种方法存在移值性问题!gcc 好像就不行!
#1
}else{//缺了个{
printf("\n\n\t\t字符串:[%s]不是回文!", str);
printf("\n\n是否继续:1 是; 2 否 \n");
printf("请选择:");
scanf("%d", &ch);
}
#2
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
#3
这样while也缺少了{,乱拉!
#4
你没仔细看吧!
#5
不好意思,我看不懂...都没见过...
#6
哦,我看错了,呵呵。最好用插入源代码,那样有格式。
在scanf后加上一个getchar();获取'\n'
在scanf后加上一个getchar();获取'\n'
#7
百度一下
#8
插入源代码,代码容易看点
#9
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin) 原因为scanf的机制,它从来都是从输入缓冲区内读取数据,而不是从键盘!标准输入是从键盘输入到输入缓冲区中。当第一次调用scanf后,除了输入了正确的数据外,我们还输入了回车符,下一次调用scanf,会读取输入缓冲区内的回车符,而不会理睬你从键盘输入的数据(通常输入字符的话,你也输不了,它认为你输过了),所以错误!fflush(stdin)或rewind(stdin) 不过好像这种方法存在移值性问题!gcc 好像就不行!