多组数据输入写法:while(scanf(“%d“,&n) != EOF)和while(~scanf(“%d“,&n) ),以及while((ch=getchar()) != EOF)
Posted 再吃一个橘子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多组数据输入写法:while(scanf(“%d“,&n) != EOF)和while(~scanf(“%d“,&n) ),以及while((ch=getchar()) != EOF)相关的知识,希望对你有一定的参考价值。
在编程中,我们经常遇到多组数据输入的情况,如下图1,其实我们无法来实现下图这种连续输入,然后最后给出结果的形式,编译器是想告诉我们要这样输入,其实我们在实际编程中是要实现,输入一列数据打印一列数据,然后再继续输入一列数据打印一列数据的效果如图2
图1
图2
1.while((ch=getchar()) != EOF)
说明:字符数据读取,适用于多组数据读取
2.while(scanf("%d",&n) != EOF)
说明:整型数据读取,适用于多组数据读取
3.while(~scanf("%d",&n))
说明:
和while(scanf("%d",&n) != EOF)效果一模一样
整型数据读取,适用于多组数据读取
解释:
为什么和while(scanf("%d",&n) != EOF)一模一样呢?因为我们的EOF的值是-1,此处不再赘述,而-1的值是32个1,即表示:当输入是32个1则停止输入
(实际上是靠我们自己从键盘来终止输入,按住Ctrl+z)
while(~scanf("%d",&n))则表示,输入的值取反,即:输入的是0,按位取反则二进制表示全是1,即:32个1,和while(scanf("%d",&n) != EOF)异曲同工。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~代码书写篇~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上是关于多组数据输入写法:while(scanf(“%d“,&n) != EOF)和while(~scanf(“%d“,&n) ),以及while((ch=getchar()) != EOF)的主要内容,如果未能解决你的问题,请参考以下文章
C语言while(scanf("%d",&num)==1);语句的一个问题
invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF