多组数据输入写法: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)的主要内容,如果未能解决你的问题,请参考以下文章

输入数据有多组,到 EOF 结束实现方法

C语言中如何实现输入输出多组数据,该如何结束输入

C语言while(scanf("%d",&num)==1);语句的一个问题

invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF

关于while(scanf_s("%d",&x)!=0) 的逻辑错误 (scanf_s的 返回值)

多组输入的语句(我在这栽倒了很多次很烦诶)