首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教这个循环如何退不出

2012-03-04 
请问这个循环怎么退不出?main(){int ret,nwhile(1){printf(Please input the item of this Polynomail:\

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

热点排行