读书人

请教这个循环如何退不出

发布时间: 2012-03-04 11:13:33 作者: rapoo

请问这个循环怎么退不出?
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;    }} 

读书人网 >C语言

热点推荐