目录
(1)while(~scanf("%d %d",&a,&b))
常用(2)while(scanf("%d %d", &a, &b)!=EOF)
重点(3) while(scanf("%d",&m)==1)
一、前言
在写这篇文章之前,我对这些基础的函数总是持有一种似懂非懂的感觉没有太在意,直到我在刷题中遇到了满屏的烫烫烫烫烫烫烫烫烫烫烫烫趟或者就是输入字符总是不符合题目格式要求,至此我专门看了一些大佬的文章,做出了我得理解。
二、C语言的三种连续输入
(1)while(~scanf("%d %d",&a,&b))
此时需要对源码、补码、反码进行理解,需要的兄弟可以看我之前的文章:
~是按位取反,-1的十六进制补码表示为0xffffffff,f是二进制的1111,取反后全部变为0,于是while结束,并且只有返回值为EOF(即-1)时,其取反值才为0,while循环才能结束。
#include <stdio.h> #include <string.h> int main() { int a, b; while (~scanf("%d %d", &a, &b)) { printf("%d\n", a + b); } return 0; }
常用(2)while(scanf("%d %d", &a, &b)!=EOF)
可以无限输入直到输入为EOF结束
#include <stdio.h> #include <string.h> int main() { int a, b; while (scanf("%d %d", &a, &b)!=EOF) { printf("%d\n", a + b); } return 0; }
重点(3) while(scanf("%d",&m)==1)
while(scanf("%d",&m)==1) 就是连续输入了无数个一个数。
其中,输入个数与scanf函数有关。例如:
while(scanf("%d %d",&m,&n)==2) 也可以连续输入2个数
重点 :在while里面可以方便加入限制条件,在做题是更加方便
例如:题目要求连续输入一个数,但是这个数不能是 0
while(scanf("%d",&m)==1 && m!=0) 就可以啦
#include <stdio.h> #include <string.h> int main() { int a; int b[5] = { 0 }; int x = 0; while (scanf("%d", &a) == 1 && a != 0) // 1 2 0 4 5 { b[x++] = a; } for (int i = 0; i < 5; i++) { printf("%d ", b[i]); // 1 2 0 0 0 } return 0; }
三、共勉
以下就是我对scanf()连续输入的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对getchar()函数的理解,请持续关注我哦!!!!!!!!