请问这个循环怎么退不出?
main()
{
int ret,n;
while(1)
{
printf("Please input the item of this Polynomail:\n");
ret=scanf("%d",&n);
if(ret==0)
{
printf("Your input is illegal!\n");
continue;
}
break;
}
}
当输入人不是数字时,这个循环怎么退不出,屏幕上老提示:
Please input the item of this Polynomail:
Your input is illegal!
[解决办法]
ret=scanf("%d",&n);
这里要求输入数字,你不输入数字就出错了呗
[解决办法]
fflush(stdin);
printf("Please input the item of this Polynomail:\n");
ret=scanf("%d",&n);
[解决办法]
2楼 正确。
[解决办法]
main()
{
int ret,n;
while(1)
{
printf("Please input the item of this Polynomail:\n");
ret=scanf("%d",&n);
if(ret==0)
{
printf("Your input is illegal!\n");
break; //是非数字字符就退出
}
continue; //是数字继续读取
}
}
[解决办法]
2楼正确, 原因是预期要读入数字,如果输入的是非数字,则scanf会一直读取, 直到读到数字为止。可以在读取之前flush下。
[解决办法]
ret=scanf("%d",&n);
当你输入非数字时返回值是0,所以循环了,
[解决办法]
4楼能不能解释一下为什么该程序能实现是字符就停止呢?我分析并调试了好久,还是不怎么明白,谢谢
[解决办法]
- C/C++ code
void main(){ int ret,n; while(1) { printf("Please input the item of this Polynomail:\n"); ret=scanf("%d",&n); fflush(stdin);//加上这个,情况缓冲 if(ret==0) { printf("Your input is illegal!\n"); continue; } break; }}