while(scanf("%d",&n)!=EOF) 输入一个数,循环怎么就结束了

 我来答
matlab2000
2011-09-25 · TA获得超过2323个赞
知道大有可为答主
回答量:1678
采纳率:100%
帮助的人:1091万
展开全部
其实是有可能输入了非数字,导致死循环了。
EOF是-1。如果scanf用%d扫描到非数字,就会返回0。但是不会消耗掉数据,然后又进来扫描,还是扫描到非数字,你运行一下下面的程序就好了。

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
int ret=0;
int n=0;

#if 1
printf("EOF %d\n",EOF);
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
while(ret!=EOF)
{
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
}
#else
while(scanf("%d",&n)!=EOF);
#endif
return 0;
}
匿名用户
推荐于2018-04-12
展开全部
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",n);

//按ctrl+z结束循环
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoruige123
2011-09-25 · TA获得超过685个赞
知道小有建树答主
回答量:348
采纳率:0%
帮助的人:284万
展开全部
因为CTRL+Z的asc的值就是EOF的值,并不是让你输入“CTRL+Z”字符串,而是按CTRL Z
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
痛快且明快灬虎鲸5807
2011-09-25 · TA获得超过6.3万个赞
知道大有可为答主
回答量:4.9万
采纳率:0%
帮助的人:7569万
展开全部
EOF是文件结束符,它的值是-1....你输入的是-1?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
佟彦明
2011-09-25 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:94.4万
展开全部
输入-1结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式