| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1776 人关注过本帖
标题:while ((status = scanf("%d",&code)) != 1 )
只看楼主 加入收藏
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
结帖率:100%
收藏
 问题点数:0 回复次数:3 
while ((status = scanf("%d",&code)) != 1 )
标题太短,写不完整
请解释以下这个代码的执行过程
while ((status = scanf("%d",&code)) != 1 || (code < 1 || code > 5))
最好以举例的方式,比如当code=1时   当code=6时 此程序的执行过程,谢谢。
搜索更多相关主题的帖子: 最好 status 
2012-08-09 21:23
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
收藏
得分:0 
回复 楼主 Dream_weaver
我的帖子还是我自己来回复吧,我自己想明白了。
程序是这样的
while((status = scanf("%d",&code)) != 1 || (code < 1 || code > 5))
{循环}

首先要说的是scanf("%d",&code)的返回值是【输入数据与格式字符串匹配的次数】,也就是说这里一定是要输入整型数据才匹配
开始
①当输入为非整型数据时,scanf返回0,status=0,status!=1, 不用管后面的代码了,直接执行循环。

②当输入为整型数据时,例如code=6,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
  于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=6是不在1~5之间,满足,执行循环。

③当输入为整型数据时,例如code=1,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
  于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=1在1~5之间,不满足,跳出循环。


此外:对于scanf还要详细说一点,即使它可以匹配多次,返回值可以是0,1,2····
      例如scanf("%d %d",&a,&b),输入两个整型数据,则scanf("%d %d",&a,&b) == 2.
2012-08-09 22:46
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
一个参数的scanf函数应该是匹配就返回1 不匹配就返回0 不会返回输入的code的值吧。
多个参数则是: scanf("%d,%d", &a, &b);  
如果a和b都被成功读入,那么scanf的返回值就是2   
如果只有a被成功读入,返回值为1   
如果a和b都未被成功读入,返回值为0   
如果遇到错误或遇到end of file,返回值为EOF。   
且返回值为int型.

梅尚程荀
马谭杨奚







                                                       
2012-08-09 23:02
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
感觉这个有些废话,!= 1 就行了


莫问前尘有愧,但求今生无悔
2012-08-09 23:07
快速回复:while ((status = scanf("%d",&code)) != 1 )
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014696 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved