C語言 連續輸入問題(小白必看)

2021-10-07 18:39:55 字數 1087 閱讀 2661

c語言的連續輸入有三種:

1.while(~scanf("%d %d",&a,&b))

其中,~是按位取反,-1的十六進製制補碼表示為0xffffffff,f是二進位制的1111,取反後全部變為0,於是while結束,並且只有返回值為eof(即-1)時,其取反值才為0,while迴圈才能結束。

例子

// 第一種連續輸入

#include

int main()

}

可以無限輸入直到輸入為eof結束

等價於下面第二種:

2.while(scanf("%d %d", &a, &b)!=eof)

其功能是迴圈從輸入流讀入m和n,直到遇到eof,有如下關係:

while (~scanf("%d %d", &m, &n)) ↔ while (scanf("%d %d", &m, &n)!=eof)

例子

// 第二種連續輸入

#include

int main()

return0;

}

3.最後一種是while(scanf("%d %d",&m,&n)==2)

scanf("%d %d",&m,&n)==2意為正確的輸入了兩個數,while(scanf("%d %d",&m,&n)==2) 就是連續輸入了無數個正確的兩個數;其中,輸入個數與scanf函式有關,比如while(scanf("%d",&n)==1)意為連續輸入是每次只輸入了乙個數。

例子

// 第二種連續輸入

#include

int main()

return0;

}

總結:

三種連續性輸入分別為

while(~scanf("%d %d",&a,&b))

while(scanf("%x%x", &a, &b)!=eof)

while(scanf("%d %d",&m,&n)==2)

如果遇到不是每次只輸入兩個,因題而異,只需改變scanf()函式括號內即可

c語言中的連續輸入問題

這個是我寫的,我覺得博文搬家有點麻煩,然後就複製貼上過來了。1.具體問題 問題的解答還有待進一步的完善 1 完整 include stdio.h struct date struct student void main 第二類 僅標黃出發生變化 scanf d t s student1.num,st...

C語言裡的scanf連續輸入出錯問題

今天在看 時發現乙個有趣的東西,下面看一段 可以看到輸入輸出出現了問題,那是什麼問題呢,經過網上查閱應該是快取的問題,就是說第一次輸入account時的enter回車也被快取到了裡面,所以說清一下快取就可以解決這個問題,清理剩下的快取有三種方法,分別是利用系統自帶的fflush方法 再次讀取乙個字元...

C語言必看!

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內只有七天,一年只有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,c語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不...