多组输入判断整数奇偶性,while (scanf("%d", &n)!=EOF)的一些理解
题目:
描述
KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。
输入描述:
多组输入,每行输入包括一个整数。
输出描述:
针对每行输入,输出该数是奇数(Odd)还是偶数(Even)。
首先这道题不拿,判一个整数n是否为偶数或奇数,只需n%2是否为0,如果是n为偶数,否则n为负数
上代码!
然后这里重点想说一下while (scanf("%d", &n)!=EOF)
EOF表示文件末尾
EOF其实就是-1,也就是说EOF被定义为-1,
使用scanf时我们在键盘输入时,其实输入的数据是放在缓冲区里,当用户按下回车时,之前输入的数据才会被存进去,然后scanf的返回值是成功接收到的对象的个数,比如scanf(“%d”,&a);如果输入10,那么scanf会接收到10这么一个对象,返回1。
有人就会注意到上面那个程序怎么结束呢?
由于在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”
所以如果想要程序停止就要让scanf返回EOF, scanf在读取遇到错误或者读取结束也就是到文件末尾的是,返回EOF。
如果想要scanf返回EOF的话,按键盘的ctrl+z,但是vs上测试的时候,有时候不会出效果
测试有2个原因
1.缓冲区的问题
2.vs运行控制台程序的时候也会有问题
同样的代码在其它的编译器下测试是可以的
作者实属初学,写博客也是作者学习的一个过程,难免文章中有内容理解不到位或者有不当之处,还请朋友们不吝指正,评论留下各自的见解,相互讨论。希望大家多多给予支持。