博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载:while(scanf("%d",&n), n)
阅读量:6509 次
发布时间:2019-06-24

本文共 1017 字,大约阅读时间需要 3 分钟。

“测试输入包含若干测试实例。当N为0时,输入结束,该实例不被处理。”

这句话 是最早我对ACM的印象 以前也没见过这种输入要求 做第一道题的时候就卡住了 上网看别人的代码 都有一句 while(scanf("%d",&n)!=EOF)

"scanf 函数还能放while里啊... EOF是什么玩仍儿呢..."

上网找答案吧 也没人可问...

有人说 EOF等于-1 其实就是scanf函数的返回值 不等于-1时 继续进行循环

有人说 EOF是处理到文件结束 不用EOF也可以

....

很多天后终于把这个弄明白了

scanf的返回值由后面的参数决定

scanf("%d%d", &a, &b);

如果a和b都被成功读入,那么scanf的返回值就是2

如果只有a被成功读入,返回值为1

如果a和b都未被成功读入,返回值为0

如果遇到错误或遇到end of file,返回值为EOF。

且返回值为int型.

验证:

        sign=scanf("%d %d",&a,&b); 

        printf("%d %d\n",a,b); 
        printf("%d\n",sign);

 

但是输入“a X”的时候 输出的sign为0

什么时候输出EOF? 在stdio.h中 宏定义为-1

按照说明,scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。

End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。

 

 当时这个程序就是这么写的:

while(scanf("%d",&n)!=EOF)

 {

   if(n==0)

  {

      break;

   }

 }

 

终于把那道题给A了... ... 

 

后来看别人的代码 又这么写了

while(scanf("%d",&n)&&n!=0)

 

后来

whlie(scanf("%d",&n)&&n)

 

再后来

while(scanf("%d",&n),n)

... ...

也许用C语言 用scanf函数 这么写是最简单的吧

========================================
while(scanf("%d",&n)!=EOF)也可以表示为while(~scanf("%d",&n));

 
 
 
原文地址: 
 

转载于:https://www.cnblogs.com/codingant/p/3439514.html

你可能感兴趣的文章
VS2010在工具栏上创建查找组合框,即:CMFCToolBar中加入CMFCToolBarComboBoxButton
查看>>
Flexigrid自定义显示数据列
查看>>
YAML基础语法
查看>>
聊聊Elasticsearch的ReleasableLock
查看>>
React Hook 实践小结
查看>>
flask学习笔记之flask-migrate
查看>>
win32——关机
查看>>
【转】Android开发之线程池使用总结
查看>>
行内元素和块级元素
查看>>
java 设计模式之桥梁模式
查看>>
[Java] 图说 注解
查看>>
js实现天小时分钟秒倒计时
查看>>
浅谈Tomcat服务器优化方法
查看>>
面向对象访问修饰符
查看>>
安装oracle出现环境不满足最低要求
查看>>
Java并发编程(一)并发特性
查看>>
css3 渐变实例2径向渐变
查看>>
Python通用编程 - 第四章:字符编码
查看>>
好程序员java教程分享+号与append的效率问题
查看>>
滚动字幕标记<marquee></marquee>
查看>>