??光天化日學C語言??(05)- 格式化輸入 | 恭喜你,你應該可以做一款獨立游戲了

      網(wǎng)友投稿 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 int main() { int a; scanf("%d", &a); printf("%d\n", a); return 0; }

      這段代碼的執(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 int main() { int a, b; scanf("%d", &a); scanf("%d", &b); printf("%d %d\n", a, b); return 0; }

      這段代碼的執(zhí)行結果如下:

      520↙ 1314↙ 520 1314

      其中↙代表回車,即我們通過鍵盤輸入520,按下回車,再輸入1314,按下回車后,在屏幕上輸出520 1314。

      這個很好理解,那么我們同樣可以把輸入放在一行上進行輸入,類比輸出的格式,如下:

      #include int main() { int a, b; scanf("%d %d", &a, &b); printf("%d %d\n", a, b); return 0; }

      這段代碼的執(zhí)行結果如下:

      520 1314↙ 520 1314

      其中↙代表回車,即我們通過鍵盤輸入520、空格、1314,按下回車后,在屏幕上輸出520 1314。

      所以,多個數(shù)據(jù)的輸入,我們可以放在一個scanf語句來完成。

      3、空格免疫

      然后我們來看下,對于輸入的數(shù)據(jù)之間有一個空格和多個空格的情況,代碼如下:

      ??光天化日學C語言??(05)- 格式化輸入 | 恭喜你,你應該可以做一款獨立游戲了

      #include int main() { int a, b; scanf("%d %d", &a, &b); printf("%d %d\n", a, b); return 0; }

      520 1314↙ 520 1314

      其中↙代表回車,即我們通過鍵盤輸入520、n個空格、1314,按下回車后,在屏幕上輸出520 1314。

      也就是說,雖然文中要求是1個空格,但是我們輸入多個也不影響我們輸入,再來看下一種情況:

      #include int main() { int a, b; scanf("%d %d", &a, &b); printf("%d %d\n", a, b); return 0; }

      520 1314↙ 520 1314

      其中↙代表回車,即我們通過鍵盤輸入520、1個空格、1314,按下回車后,在屏幕上輸出520 1314。

      也就是說,雖然文中要求多個空格,但是我們輸入1個也不影響我們輸入。

      4、回車結算

      通過以上的幾個例子,我們發(fā)現(xiàn),scanf()是以回車來結算一次輸入的。

      用戶每次按下回車鍵,計算機就會認為完成一次輸入操作,scanf()開始讀取用戶輸入的內容,并根據(jù)我們定義好的格式化內容從中提取有效數(shù)據(jù),只要用戶輸入的內容和格式化內容匹配,就能夠正確提取。

      五、輸入緩沖區(qū)

      在講輸入緩沖區(qū)之前,我們先來看個例子:

      #include int main() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); printf("%d %d %d %d\n", a, b, c, d); return 0; }

      接下里我們將圍繞這段代碼進行展開。

      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 int main() { int a, b, c, d, e; scanf("%d %d %d %d", &a, &b, &c, &d); printf("%d %d %d %d\n", a, b, c, d); scanf("%d", &e); printf("%d\n", e); return 0; }

      然后我們采用上述的一次性輸入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 int main() { int a = 9, b = 8, c = 7, d = 6, e = 5; scanf("%d %d %d %d", &a, &b, &c, &d); printf("%d %d %d %d\n", a, b, c, d); scanf("%d", &e); printf("%d\n", e); return 0; }

      輸入如下:

      1 2b 3 4 5↙

      六、其他數(shù)據(jù)類型的格式化輸入

      其它數(shù)據(jù)類型,例如浮點數(shù)、字符、字符串的格式化參數(shù)類似 printf,如下:

      1、字符串的輸入

      關于字符串,后面在講完數(shù)組以后,還會著重講,也有很多匹配算法是應用于字符串上的,也是一個很重要的內容,所以這里不作太多介紹,只需要記住,字符串輸入時&可以不加,如下:

      #include int main() { char str[100]; scanf("%s", str); // (1) printf("%s\n", str); scanf("%s", &str); // (2) printf("%s\n", str); return 0; }

      (

      1

      )

      (1)

      (1) 和

      (

      2

      )

      (2)

      (2) 的方式都是可以的,但是我們一般采用

      (

      1

      )

      (1)

      (1) 的方式;

      2、做個簡單的游戲吧

      這是一個算命游戲,要求根據(jù)輸入的姓名,得到這個人的算命信息。

      我們先來看看效果:

      好啦,代碼實現(xiàn)如下:

      #include int main() { char str[100]; int height; printf("請大俠輸入姓名:"); scanf("%s", str); printf("請大俠輸入身高(cm):"); scanf("%d", &height); printf("%s大俠,身高%dcm,骨骼驚奇,是百年難得一遇的人才,只要好好學習C語言,日后必成大器!\n", str, height); return 0; }

      你學廢了嗎?評論區(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小時內刪除侵權內容。

      上一篇:Excel圖表轉為圖片
      下一篇:智能進銷存庫存表,改善效能、提升企業(yè)管理水平
      相關文章
      国产亚洲一区二区精品| 亚洲综合无码一区二区三区| 91亚洲精品第一综合不卡播放| 国产精品观看在线亚洲人成网| 亚洲狠狠狠一区二区三区| 久久久久久亚洲av成人无码国产| 久久影院亚洲一区| 亚洲精品视频在线看| 亚洲阿v天堂在线2017免费| www国产亚洲精品久久久| 成人亚洲网站www在线观看| 亚洲av成人一区二区三区在线播放 | 国产精品亚洲一区二区三区| 国产成人人综合亚洲欧美丁香花| 亚洲乱色熟女一区二区三区蜜臀| 亚洲AV无码国产精品永久一区| 亚洲最大av资源站无码av网址| 亚洲一区二区三区在线观看网站| 亚洲色大情网站www| 亚洲AV永久无码精品一福利| 亚洲人成www在线播放| 亚洲日韩av无码中文| 亚洲1区2区3区精华液| 亚洲国产成人久久精品99| 国产亚洲精品国看不卡| 久久九九亚洲精品| 18gay台湾男同亚洲男同| 亚洲人成影院在线高清| 亚洲人精品亚洲人成在线| 亚洲av永久无码一区二区三区| 午夜亚洲国产精品福利| 伊伊人成亚洲综合人网7777| 国产av无码专区亚洲av桃花庵| 亚洲视频精品在线| 亚洲AV无码久久久久网站蜜桃 | 国产午夜亚洲精品| 欧洲亚洲综合一区二区三区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 色久悠悠婷婷综合在线亚洲| 久久精品亚洲日本佐佐木明希| 亚洲黄色免费观看|