c_learn_2
985
2025-04-04
一、前言
二、人物簡介
第一位登場的就是今后會一直教我們C語言的老師 —— 光天。
第二位登場的則是今后會和大家一起學習C語言的沒什么資質的小白程序猿 —— 化日。
三、概念簡介
1、輸入的含義
2、標準輸入
在C語言中,有三個函數(shù)可以用來在鍵盤上輸入數(shù)據(jù),它們分別是:
1)gets() :用于輸入一行字符串;
2)getchar() :用于輸入單個字符;
3)scanf():可以輸入各種類型的數(shù)據(jù),作為最靈活、最復雜、最常用的輸入函數(shù),雖然無法完全替代前面兩者,但是卻是必須掌握的,今天我們就來全面了解一下這個函數(shù)。
3、格式化
我們在進行輸入的時候,其實都是一個字符串,但是這個字符串被輸入后有可能當成整數(shù)來用,也有可能還是字符串,這個計算機自己是不知道規(guī)則的,需要寫代碼的人告訴它,這個告訴它如何輸入的過程就被稱為格式化。
四、整數(shù)的格式化輸入
scanf的函數(shù)的命名含義是:Scan(掃描) 和 Format (格式) ,即 格式化輸入。
和輸出一樣,輸入的時候,也根據(jù)數(shù)據(jù)類型的不同,分為 整數(shù)、浮點數(shù)、字符、字符串等等。
但是這里會有很多問題,拿整數(shù)的輸入為例,我們一個一個來看。
1、單個數(shù)據(jù)的輸入
對于單個數(shù)據(jù)的輸入,如下代碼所示:
#include
這段代碼的執(zhí)行結果如下:
1314↙ 1314
其中↙代表回車,即我們通過鍵盤輸入1314,按下回車后,在屏幕上輸出1314。
類比輸出,我們發(fā)現(xiàn),輸入和輸出的差別在于:
(
1
)
(1)
(1) 函數(shù)名不同;
(
2
)
(2)
(2) 輸入少了換行符 \n;
(
3
)
(3)
(3) 輸入多了取地址符&;
我們會在后面指針的章節(jié)來圍繞對這個符號進行展開的。
2、多個數(shù)據(jù)的輸入
類比單個數(shù)據(jù)的輸入,我們來看看兩個數(shù)據(jù)的輸入:
#include
這段代碼的執(zhí)行結果如下:
520↙ 1314↙ 520 1314
其中↙代表回車,即我們通過鍵盤輸入520,按下回車,再輸入1314,按下回車后,在屏幕上輸出520 1314。
這個很好理解,那么我們同樣可以把輸入放在一行上進行輸入,類比輸出的格式,如下:
#include
這段代碼的執(zhí)行結果如下:
520 1314↙ 520 1314
其中↙代表回車,即我們通過鍵盤輸入520、空格、1314,按下回車后,在屏幕上輸出520 1314。
所以,多個數(shù)據(jù)的輸入,我們可以放在一個scanf語句來完成。
3、空格免疫
然后我們來看下,對于輸入的數(shù)據(jù)之間有一個空格和多個空格的情況,代碼如下:
#include
520 1314↙ 520 1314
其中↙代表回車,即我們通過鍵盤輸入520、n個空格、1314,按下回車后,在屏幕上輸出520 1314。
也就是說,雖然文中要求是1個空格,但是我們輸入多個也不影響我們輸入,再來看下一種情況:
#include
520 1314↙ 520 1314
其中↙代表回車,即我們通過鍵盤輸入520、1個空格、1314,按下回車后,在屏幕上輸出520 1314。
也就是說,雖然文中要求多個空格,但是我們輸入1個也不影響我們輸入。
4、回車結算
通過以上的幾個例子,我們發(fā)現(xiàn),scanf()是以回車來結算一次輸入的。
用戶每次按下回車鍵,計算機就會認為完成一次輸入操作,scanf()開始讀取用戶輸入的內容,并根據(jù)我們定義好的格式化內容從中提取有效數(shù)據(jù),只要用戶輸入的內容和格式化內容匹配,就能夠正確提取。
五、輸入緩沖區(qū)
在講輸入緩沖區(qū)之前,我們先來看個例子:
#include
接下里我們將圍繞這段代碼進行展開。
1 2 3 4↙ 1 2 3 4
以上是我們的期望輸入。
1、少輸入
我們嘗試少輸入1個數(shù),按下回車后,發(fā)現(xiàn)程序并沒有任何的輸出,當我們再次輸入下一個數(shù)的時候,產生了正確的輸出,如下:
1 2 3↙ 4↙ 1 2 3 4
2、多輸入
我們嘗試多輸入1個數(shù),按下回車后,發(fā)現(xiàn)輸出了前四個我們輸入的數(shù),如下:
1 2 3 4 5↙ 1 2 3 4
3、再次嘗試
我們增加一行代碼,就是在輸出四個數(shù)以后,再調用一次 scanf(),如下:
#include
然后我們采用上述的一次性輸入5個數(shù)的方式,如下:
1 2 3 4 5↙ 1 2 3 4 5
這時候,我們發(fā)現(xiàn)程序正常運行了。
這是因為:我們從鍵盤輸入的數(shù)據(jù)并沒有直接交給scanf(),而是放入了輸入緩沖區(qū)中,當我們按下回車鍵,scanf()才到輸入緩沖區(qū)中讀取數(shù)據(jù)。如果緩沖區(qū)中的數(shù)據(jù)符合 scanf()給定的格式要求,那么就讀取結束;否則,繼續(xù)等待用戶輸入,或者讀取失敗。
關于輸入緩沖區(qū)的內容,比較復雜,屬于進階內容,就不在這個章節(jié)繼續(xù)展開啦。
【例題1】給定一段代碼,如下,并且給出一個輸入,請問輸出是什么。
#include
輸入如下:
1 2b 3 4 5↙
六、其他數(shù)據(jù)類型的格式化輸入
其它數(shù)據(jù)類型,例如浮點數(shù)、字符、字符串的格式化參數(shù)類似 printf,如下:
1、字符串的輸入
關于字符串,后面在講完數(shù)組以后,還會著重講,也有很多匹配算法是應用于字符串上的,也是一個很重要的內容,所以這里不作太多介紹,只需要記住,字符串輸入時&可以不加,如下:
#include
(
1
)
(1)
(1) 和
(
2
)
(2)
(2) 的方式都是可以的,但是我們一般采用
(
1
)
(1)
(1) 的方式;
2、做個簡單的游戲吧
這是一個算命游戲,要求根據(jù)輸入的姓名,得到這個人的算命信息。
我們先來看看效果:
好啦,代碼實現(xiàn)如下:
#include
你學廢了嗎?評論區(qū)留下你的算命結果哦 ~~
通過這一章,我們學會了 從鍵盤輸入數(shù)據(jù),以及實現(xiàn)簡單的人機交互,希望對你有幫助哦 ~ 祝大家早日成為 C 語言大神!
C 語言
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。