「第6篇」「C程序上機題」「統計輸入的字符個數思路與實現」

2020-12-13 C語言答疑課堂

一、統計輸入的字符個數

同學們在學習C語言課程中,經常會遇到一道題,就是要求你寫一個C程序,這個C程序能夠讀取你從鍵盤上輸入的字符,並且統計其中的字符個數,最後輸出總的字符個數並且把這些輸入的字符再輸出來。

不少同學遇到這道題沒啥思路,不知該如何上手。其實需要按照分解題目、每個分解的部分對應的C語言的哪些知識點、每個分解的部分寫成偽C程序代碼,最後完善為一個可以編譯與執行的C程序代碼的步驟來。每一個C程序上機題看著難,其實不然,同學們需要掌握做題的思路,按照思路一步一步地走下去。這篇文章及後續的上機題都會教同學們思路。C程序代碼不重要,重要的是思路。

二、題目分解思路

同學們在拿到一道C程序上機題時,要仔細審題,就像我們小時候寫作文一樣要仔細審題。通過審題,同學們要分解題目,通過分解提煉出題目中的關鍵點,也就是只要把這些關鍵點做出來,這道題也就做出來了。

關於這道題,我們仔細分解試題後可以提取出這道題的幾個關鍵點,如下:

1、要求實現一段C程序。

2、C程序要讀取你從鍵盤上輸入的字符。

3、統計字符的個數。

4、輸出字符的個數。

5、輸出所有的字符。

好了,這道C程序題的關鍵點我們都提取出來了,下面來說說每個關鍵點對應的C語言知識點。

三、C語言知識點

上面提取出了5個關鍵點,同學們要能迅速在腦海中找到這5個關鍵點對應的C語言知識點,這個就需要同學們平時認真地學習C語言、打好C語言的基礎了。如果不記得的話,趕緊查查書再溫習溫習。

這5個關鍵點對應的C語言知識點如下。

1、要求實現一段C程序。

但凡是C程序,總有一些固定的東西,比如該包含的頭文件要包含進來,然後把main函數先寫好,就像這樣:

剩下的事兒不就是慢慢地填其他代碼嗎。

2、C程序要讀取你從鍵盤上輸入的字符。

要從鍵盤上讀取輸入的字符,同學們想想有哪些函數是可以從鍵盤讀入字符的?這個時候你應

該能快速地想打scanf、getchar等,對吧。最起碼你得想到scanf吧,這個都想不到的話趕緊再去看看書,溫習溫習。

這裡我們先用getchar吧。

3、統計字符的個數。

既然要統計字符的個數,那麼就需要一個變量吧,這個變量專門存放字符的個數的。而且字符的個數肯定是個整數對吧,又不可能是個小數。既然是整數,同學們腦海裡立馬就應該想到C語言中標記整數的那些類型,比如short,int,long等。這道題輸入的字符數不會很多,那麼這個變量的類型可以選用int。

4、輸出字符的個數。

輸出字符的個數,那當然就要用到輸出函數了,同學們腦海裡就應該立即想到有哪些輸出的函數呢?最常見的肯定是printf函數了,行,我們就用printf函數吧。

5、輸出所有的字符。

哎呀,還要輸出所有的字符。那麼同學們就要想想了,C程序裡什麼時候輸出呢?是把所有的字符都收下來再輸出還是一邊收字符一邊輸出呢?

如果是都收下來再輸出的話,那麼就需要一個能夠存放字符的地方,比如數組。

如果是邊收邊輸出的話,那就無需數組了。

這裡我建議採用邊收邊輸出的方法,我留道題給同學們思考,如果採用數組的方式,會有什麼問題呢?歡迎留言討論。

好了,5個關鍵點對應的C語言知識點都講到了,下面我們試著用這些C語言知識點寫一段C程序的偽代碼吧。

四、C程序偽代碼

現在我們把上面分析到的結果用C程序偽代碼寫出來。偽代碼就是你自己隨便寫,只要能幫助你自己理解就行。一個C程序偽代碼如下:

{!-- PGC_COLUMN --}

五、最後生成一個完整的C程序

完成偽代碼之後,我們就要對偽代碼做「藝術加工」,慢慢完善它,使得它成為一個可以被編譯和運行的C程序。下面我們來把偽代碼變成真正的C程序代碼吧。

1. 聲明一個字符變量val。這個字符變量用來存儲輸入的每一個字符。

這句偽代碼轉換成正式的C程序代碼不難吧,如下:

char val = 『\0』;

這裡我再次強調啊,聲明一個變量的時候最好是給它一個初始值哦。

2.聲明一個整型變量count,來存儲字符的個數

這句偽代碼轉換成正式的C程序代碼也不難吧,如下:

unsigned int count = 0;

由於count是專門存放字符個數的,所以它肯定是個正數,而unsigned int就表示正數的整型的意思。

3. while循環裡

這段循環的C程序代碼是本程序的關鍵部分,轉換為正式的C程序代碼如下:

每次使用getchar讀取到一個字符後就給變量val。由於同學們輸入完字符之後肯定會按下一個回車鍵,也就是產生了一個換行符\n,因此C程序判斷變量val是換行符的話就認為輸入結束了。

循環裡面變量count就會自己不斷地加1,同時輸出讀取到的字符。getchar也在不斷地讀取輸入的字符。

5.printf函數輸出字符的個數

輸出字符個數很簡單,如下:

printf("\n輸入的字符個數為: %u", count);

這裡由於count是正數,因此使用%u來輸出count的值而不是%d。

C程序運行結果如下:

同學們以後在做上機題時,需要按照本文介紹的方法:題目分解、想起對應的知識點、寫出偽代碼、寫出正式的C程序。

相關焦點

  • 「邏輯判斷-最強程度」解題思路:「4層程度」法與「蘋果理論」
    諸如「拆橋削弱」、「因果倒置」、「搭橋加強」、「解釋論點」等削弱加強角度是成立的,這幾個詞把長觀點也濃縮的很好記憶,但問題是這種強調削弱增強角度的分類,並不適合「最強程度」題。希望各位小夥伴們能夠通過上述例子理解「最強程度」題的關鍵,不要盲目套用公式。「最強程度」題如果去掉「最」字,往往會有多個正確答案。這就是「最強程度」的特色:從「正確答案」中選出「程度最強」的選項。「最強程度」題的核心是概括題幹,總結出結論和論據,然後再去分析4個選項若為真,對題乾結論會有什麼樣的影響。
  • 公考行測「定義判斷」解題思路:「要素濃縮」法
    「定義判斷」題的解題思路是唯一的,因為每次考試時,這道題的解題思路都被明明白白地寫在試卷上:每道題先給出定義,然後列出四種情況,要求你嚴格依據定義,從中選出一個最符合或最不符合該定義的答案。注意:假設這個定義是正確的,不容置疑的。
  • 「邏輯判斷-真假能否」解題思路與難題解析
    此時第3天課程已填滿,還有1、2、4三天。根據②可知「邏=數+1=哲」,而相連的還剩1、2兩天,因此必然的安排為:「邏輯」在第一天,「數學+哲學」在第2天根據③可知「統=1or2」,而第二天安排已滿,因此第一天安排為「統計+邏輯」。
  • 「邏輯判斷-條件推理」解題思路:「元素鏈條」法
    「邏輯判斷-條件推理」解題思路:「元素鏈條」法全文字數|819閱讀時間|3分鐘「逆否命題」難題一、「條件推理」題的定義與特點所謂「條件推理」題,就是給出數個條件後要求考生根據已知條件進行推理,此類題目主要有兩類:
  • 李老師帶你做二級C語言選擇題真題,輕鬆過級「14」
    10】期(輸入輸出6-10題):李老師帶你做二級C語言選擇題真題,輕鬆過級「10」第【11】期(輸入輸出11-15題):李老師帶你做二級C語言選擇題真題,輕鬆過級「11」第【12】期(輸入輸出16-20題):
  • 不再煩惱——日文中標點的使用方法「破折號篇」
    事實上,連字符、減號、EN破折號、EM破折號、EM破折號、格線等不同類型。在這篇文章中,我們將研究每一種破折號的含義和由來,以及這些破折號的使用方法和輸入方法。在採訪報導之類的文章中,「——」常常被用在陳述開頭。這就是官方所說的破折號「ダッシュ記號」。但是,有很多人會使用不知道是什麼的「橫線」來代替,誤以為所有的橫線都是一樣的。
  • 李老師帶你做二級C語言選擇題真題,輕鬆過級「13」
    李老師帶你做二級C語言選擇題真題,輕鬆過級「9」第【10】期(輸入輸出6-10題):李老師帶你做二級C語言選擇題真題,輕鬆過級「10」第【11】期(輸入輸出11-15題):李老師帶你做二級C語言選擇題真題,輕鬆過級「11」第【12】期(輸入輸出16-20題):
  • 「算法與數據結構」一張腦圖帶你看動態划算法之美
    如果你還不了解,或者知道動態規劃,但是還沒有開始刷題的話,可能這篇文章適合你。公眾號「前端UpUp」,回復dp,即可獲取腦圖。這裡推薦幾道題👇數位dp數位dp是一種計數用的dp,一般就是要統計一個區間[le,ri]內滿足一些條件數的個數。數位還算是比較好聽的名字,數位的含義:一個數有個位、十位、百位、千位.數的每一位就是數位啦!
  • 李老師帶你做二級C語言選擇題真題,輕鬆過級「10」
    計算機等級考試二級C語言選擇題練習講解-5第【6】期(基本語法26-30題):李老師帶你做二級C語言選擇題真題,輕鬆過級「7」第【8】期(基本語法36-41題):李老師帶你做二級C語言選擇題真題,輕鬆過級「8」第【9】期(輸入輸出1-5題):
  • 從「奧數」、「費馬最後定理」到「數學之美」
    前蘇聯率先於1934、1935兩年在國內舉辦中學數學競賽,並冠以「數學奧林匹亞」名稱以與發源於古希臘的體育競賽相提並論。1959年,第一屆國際數學奧林匹亞競賽(International Mathematical Olympiad)於羅馬尼亞舉行,1980年因故暫停一次,其餘每年皆更換主辦國易地舉行一次,2015年第56屆盛會即將在泰國曼谷舉行。
  • Mac自帶輸入法如何輸入「犇」和「焱」?Mac使用技巧
    點擊音量圖標,面板會增加「輸入」的控制項,在連接藍牙耳機的情況下,你可以將輸入設備由電腦的「麥克風」切換為「藍牙耳機」。打開的窗口會有四個下拉框,分別對應屏幕的四個角落,你可以從下拉框中選擇不同的觸發操作。
  • 幾道和「廣度優先搜索」有關的算法面試題
    題目描述給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。題目解析這道題目很有意思。大部分文章給出的答案都是依託於一個定理:四平方定理。
  • 公務員行測考試「數量關係-小學奧數」解題思路:「簡化突破」法
    例如涉及「年齡」的「某人在多少歲時的年份個數字之和為……」的題目,小學二三年級的小朋友就有可能做出。②範圍極為廣闊,沒有固定題型「小學奧數」題考察的範圍大到根本無法用固定的描述來進行概括。網絡上有人對其進行總結,發現題型至少有二十多種,包括「牛吃草」「雞兔同籠」「蓄水池」「工程類」「鐘錶題」「濃度題」「年齡題」「行程類」……其實,這種分類是沒必要的,因為考場上不可能給考生在腦子中把二十多種題過一遍,然而再去套公式。
  • 我是如何用「最大公約數」秒殺算法題的
    實例解析題目描述給你三個數字 a,b,c,你需要找到第 n 個(n 從 0 開始)有序序列的值,這個有序序列是由 a,b,c 的整數倍構成的。(第二彈) [6]然而這種做法時間複雜度太高,有沒有更好的做法呢?實際上,我們可對搜索空間進行二分。首先思考一個問題,如果給定一個數字 x,那麼有序序列中小於等於 x 的值有幾個。
  • 「學習筆記」HTML基礎
    ✨✨    本篇文章主要由五個章節構成,從WEB標準到初識HTML,接著學習HTML常用標籤,最後學習表格列表和表單。💪💪開始充電之旅啦~~~一、認識WEB「網頁」主要是由文字、圖像和超連結等元素構成,當然除了這些元素,網頁中還可以包括音頻、視頻以及Flash等。
  • 看動畫輕鬆理解「Trie樹」
    雖然發音與「Tree」一致,但為了將這種 字典樹 與 普通二叉樹 以示區別,程式設計師小吳一般讀「Trie」尾部會重讀一聲,可以理解為讀「TreeE」。Trie樹,也叫「字典樹」。顧名思義,它是一個樹形結構。它是一種專門處理字符串匹配的數據結構,用來解決在一組字符串集合中快速查找某個字符串的問題。
  • 「騰訊作業君」App上線,端出在線教育「全家桶」
    Tech星球(微信ID:tech618)獨家獲悉,騰訊於近日推出了全新的教育產品「騰訊作業君」App,並且附帶上線了「騰訊作業君」微信小程序,方便師生們在微信端使用。  據蘋果應用商店中有關該產品的官方介紹,「騰訊作業君」這款在線教育產品,提供在線組題、發布作業、在線提交作業、批改作業、作業結果統計等一站式作業服務。
  • 【第1069期】你知道「編譯」與「解釋」的區別嗎?
    如果有人問我們「你知道什麼是編譯器麼?」,我們很有可能首先蔑視一下這個人,然後說:「知道啊,不就編譯程式語言的程序嘛!」要是別人再追問一句「那你知道解釋器麼?」,這時候很有可能也會說「知道啊。」,但是很難再帶有蔑視的語氣了。要是再問一句「那麼編譯器和解釋器的區別是什麼啊?」
  • 灌溉有「數」:別讓農作物「喝多了」
    三亞市常年蔬菜應急調控基地三亞市常年蔬菜應急調控基地在中國最南端的三亞市常年蔬菜應急調控基地,一排排大棚鱗次櫛比,大棚內種植了菜心、空心菜、小白菜、小芥菜等多種品種,各品種的種植環境數據清晰直觀的實時顯示在大屏幕上:「空氣溫度 21.2℃、溼度 60.6%、光照1600Lx、1#品種基地土壤溫度
  • 計算機能「理解」多少我們的語言了?
    不過第一次引起公眾關注要到 1954 年,那年 1 月 7 日,美國喬治城大學的研究者和 IBM 利用 6 條規則,250 個詞彙,完成了一次俄英機器翻譯演示——二戰後,蘇聯是美國的頭號對手,了解這個國度的一舉一動是那時政府的迫切需求,尤其是科學報告。