|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 如何让while语句停下来。。我停不下来 求解答呀
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1261
人关注过本帖
标题:
如何让while语句停下来。。我停不下来 求解答呀
只看楼主
加入收藏
可爱的啊四哟
等 级:
新手上路
帖 子:24
专家分:2
注 册:2012-10-23
结帖率:
66.67%
楼主
收藏
已结贴
√
问题点数:20 回复次数:10
如何让while语句停下来。。我停不下来 求解答呀
#include<stdio.h>
main()
{
int i,j,n,s=1,a;
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a);
for(j=0;j<a;j++)
{
s=s*a;
}
s=s-(s/10*10);
printf("%d\n",s);
s=1;
}
n=0;
}
}
搜索更多相关主题的帖子:
如何
2013-02-14 17:08
举报帖子
使用道具
赠送鲜花
可爱的啊四哟
等 级:
新手上路
帖 子:24
专家分:2
注 册:2012-10-23
第
2
楼
收藏
得分:0
2013-02-14 17:11
举报帖子
使用道具
赠送鲜花
心灯甚亮
等 级:
蝙蝠侠
威 望:
2
帖 子:441
专家分:996
注 册:2013-1-29
第
3
楼
收藏
得分:3
windows下ctrl+Z
2013-02-14 19:12
举报帖子
使用道具
赠送鲜花
洫魇
等 级:
论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
第
4
楼
收藏
得分:3
scanf函数的传回值是成功读入的字符个数,而EOF常量的值为 -1,EOF是文件结尾的字符值.
scanf函数传回值只有在输入错误的情况才会传回 -1,所以在 :
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a);
for(j=0;j<a;j++)
{
s=s*a;
}
s=s-(s/10*10);
printf("%d\n",s);
s=1;
}
中,一直在while循环中.
希望对你有帮助O(∩_∩)O.
一切,都在输给时间.
2013-02-14 19:17
举报帖子
使用道具
赠送鲜花
洫魇
等 级:
论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
第
5
楼
收藏
得分:0
以下是引用
心灯甚亮
在2013-2-14 19:12:45的发言:
windows下ctrl+Z
这个方法应该也行得通.
一切,都在输给时间.
2013-02-14 19:17
举报帖子
使用道具
赠送鲜花
心灯甚亮
等 级:
蝙蝠侠
威 望:
2
帖 子:441
专家分:996
注 册:2013-1-29
第
6
楼
收藏
得分:0
windows下ctrl+Z使得scanf返回EOF
不同系统对EOF有不同的按键方式
2013-02-14 19:40
举报帖子
使用道具
赠送鲜花
果沫
等 级:
蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
第
7
楼
收藏
得分:3
这是让你一直输入整数,直到你输入CTRL+Z后按回车才会结束WHILE循环
2013-02-14 21:22
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
8
楼
收藏
得分:3
停电就停下来了
授人以渔,不授人以鱼。
2013-02-14 21:39
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
9
楼
收藏
得分:0
写程序的人,要学会站在用户的角度思考,不要你自己写出用scan()!=EOF来判断输入结束,就以为用户也懂按那些组合键,甚至以为用户不会给出非法数据,你的程序不能处理非法的操作,死循环就很正常了。scanf()!=EOF,只有在输入遇到结束符的时候才会返回EOF,但用户可能键入字母而非数字键(键盘上还有很多你想都没想过的各种按键可能被输入进来),此时scanf()无法把输入转化为数值,但又不返回EOF(此时返回的是0,而EOF是-1,仅仅判断-1是不够的),而非法的输入流仍然保留在输入缓冲区中无法清除,怎么不死循环!这种现象取决于用户的操作是怎样的,而不是你的代码是怎样的。
scanf()的返回值,是返回成功处理的数据项数,scanf("%d", &n),只请求读入1项整数,假如读入成功,函数将返回1,只要不是1,就是遇到错误或非法输入了,这个时候就要考虑中断循环并清空输入缓冲区,否则那些不能处理的数据仍然会留在那里堵塞程序流程。
[
本帖最后由 TonyDeng 于 2013-2-14 22:20 编辑
]
授人以渔,不授人以鱼。
2013-02-14 22:15
举报帖子
使用道具
赠送鲜花
zklhp
来 自:china
等 级:
贵宾
威 望:
254
帖 子:11485
专家分:33241
注 册:2007-7-10
第
10
楼
收藏
得分:3
以下是引用
TonyDeng
在2013-2-14 22:15:15的发言:
写程序的人,要学会站在用户的角度思考,不要你自己写出用scan()!=EOF来判断输入结束,就以为用户也懂按那些组合键,甚至以为用户不会给出非法数据,你的程序不能处理非法的操作,死循环就很正常了。scanf()!=EOF,只有在输入遇到结束符的时候才会返回EOF,但用户可能键入字母而非数字键(键盘上还有很多你想都没想过的各种按键可能被输入进来),此时scanf()无法把输入转化为数值,但又不返回EOF(此时返回的是0,而EOF是-1,仅仅判断-1是不够的),而非法的输入流仍然保留在输入缓冲区中无法清除,怎么不死循环!这种现象取决于用户的操作是怎样的,而不是你的代码是怎样的。
scanf()的返回值,是返回成功处理的数据项数,scanf("%d", &n),只请求读入1项整数,假如读入成功,函数将返回1,只要不是1,就是遇到错误或非法输入了,这个时候就要考虑中断循环并清空输入缓冲区,否则那些不能处理的数据仍然会留在那里堵塞程序流程。
大牛说得好
2013-02-14 22:34
举报帖子
使用道具
赠送鲜花
11
1/2页
1
2
快速回复:
如何让while语句停下来。。我停不下来 求解答呀
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.031550 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved