日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言中的多行輸入問題及說明_C 語言

作者:安河橋畔 ? 更新時間: 2023-04-06 編程語言

??途W和LeetCode的競賽題中經常會遇到多行輸入,以前不熟悉這種寫程序的方式,初次接觸時輸入值會有很多問題。

多行輸入有下面這些常用方法:

一、未明確具體輸入行數

沒有確定的輸入行數時,一般要采用Ctrl+Z結束輸入,系統會自動輸入這些,我們要做的是設置好循環條件即可。

具體是每次輸入都產生結果還是所有輸入完以后再輸出結果要看題目要求。

如:輸入多個字符串,保存在二維數組中,可以采用以下兩種方式:

1、~scanf方式

? ?char str[10][10];//定義二維數組,保存多個字符串
? ? int i = 0;
? ? while (~scanf("%s", str[i]))
? ? {
? ? ? ? i++;
? ? }

這里每次敲下回車會結束一次輸入,循環進行一輪。

scanf函數的返回值為正確輸入的值的個數,如過沒有正確輸入,scanf返回值即為-1,對-1按位取反值為0,用于退出循環。

Windows平臺,用Ctrl+Z來表示輸入結束,有些編譯器需要連續按兩次或者三次Ctrl+Z,且每次都在行首。

2、EOF

End of file,文件結束符

char str[10][10];//定義二維數組,保存多個字符串
? ? int i = 0;
? ? while (scanf("%s", str[i])!=EOF)
? ? {
? ? ? ? i++;
? ? }

3、根據輸入元素的個數

char str[10][10];//定義二維數組,保存多個字符串
? ? int i = 0;
? ? while (scanf("%s", str[i])==1)//表示輸入一個元素時,循環進行
? ? {
? ? ? ? i++;
? ? }

這里的’1’代表的是要輸入的元素的個數,如果輸入元素個數不為1則循環結束。

二、已知具體輸入行數

知道輸入行數時,循環條件設為具體行數即可

? char str1[10][10];//定義二維數組,保存多個字符串
? ? ? ? int num = 10;
? ? ? ? int i = 0;
? ? while (num--)
? ? {
? ? ? ? scanf("%s", &str1[i]);
? ? ? ? i++;
? ? }

ps:

上面的輸入都是針對字符串來說的,而對于整型或浮點型數據來說,除了"\n"即回車以外,空格隔開也會自動結束一個數據的輸入。

造成這種區別的根本原因就是字符類型中原本就會有空格符,不能作為輸入結束的標志,而整型和浮點型可以。

int N = 0;
?? ?scanf("%d", &N);
?? ?for (int i = 1; i <= N; i++)
?? ?{
?? ??? ?scanf("%d %d %d", &first[i], &second[i], &third[i]);
?? ??? ?printf("%d %d %d", first[i], second[i], third[i]);
?? ?}

輸入和輸出:

無論使用空格還是換行符隔開,都不影響最終的結果。

總結

原文鏈接:https://blog.csdn.net/qq_44631587/article/details/121339227

欄目分類
最近更新