單詞長度 week8 C語言習題集

2021-07-15 10:56:18 字數 1443 閱讀 1075

單詞長度(4分)

題目內容:

你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以『.』結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如「it』s」算乙個單詞,長度為4。注意,行中可能出現連續的空格。

輸入格式:

輸入在一行中給出一行文字,以『.』結束,結尾的句號不能計算在最後乙個單詞的長度內。

輸出格式:

在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。

輸入樣例:

it』s great to see you here.

輸出樣例:

4 5 2 3 3 4

時間限制:500ms記憶體限制:32000kb

/*

本題解法有個不理解的一點是:while第一次迴圈用scanf輸入多個字元;但是在迴圈中只是判斷乙個字元,之後的while迴圈

再經過scanf的時候不輸入,自動讀下乙個字元,是不是跟scanf("%c",)中的c有關???

答:以下是個人猜測:

當程式執行時遇到scanf,程式會去檢查shell,看看有沒有資料存在shell的緩衝區,如果沒有,shell就等待鍵盤輸入,此時

鍵盤進行輸入,到shell的緩衝區,直到按下回車,scanf由於括號裡面是%c,此時從緩衝區讀入乙個字元到程式,接著程式執行

下一步,當下個迴圈又遇到scanf時,程式會去檢查shell的緩衝區有無資料,因為第一次輸入多個字元,而唯讀了第乙個字元,

所以這個時候緩衝區還有資料,就不去啟動等待鍵盤的輸入,而是直接從緩衝區讀入第二個字元,以此類推;

總結:也就是說scanf從shell緩衝區讀入資料,讀多少,是看scanf("")中的內容,而第一次鍵盤輸入可以輸入多個資料到shell的

緩衝區,直到按下回車;

1,本題不是考慮讀入整個字串,而是每次輸入乙個字元就讀乙個字元,並記錄相關數字,用char ch 記錄就好;

不考慮用 char *ch???

答:char ch 表示輸入的字元,字元可以有很多個;而char *ch 表示ch指向字串,只有乙個;

2,記錄了第乙個單詞的長度,當遇到空格時如何儲存第乙個單詞的長度,去記錄第二個單詞的長度?答:其實有個while迴圈

每次遇到空格就先printf乙個數字,只是程式執行太快,直觀上以為printf是一次性輸出,其實是乙個迴圈一次輸出,

用debug就能看出端倪

3,字元是用單引號表示

4,對多餘空格的處理,我選擇判斷是否cnt是零,如果是continue;(continue很巧妙,仔細體會)

*/#include

#include

int main()

else

if (ch != ' ')

else

else}}

return

0;}

C語言 單詞長度

c語言 單詞長度 你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以 結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如 it s 算乙個單詞,長度為4。注意,行中可能出現連續的空格。輸入在一行中給出一行文字,以 結束,結尾的句號不能計算在最後乙個單詞的長度內。...

時間換算 week2 C語言習題集

輸入格式 乙個整數,表示bjt的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分 如果小時是0,則沒有百位部分 如果小時不是0而分小於10分,需要保留十位上的0 如果小時是0而分小於10分的,則不需要保留十位上的0。輸出格式 乙個整數,表示utc的時和分。整數的個...

奇偶個數 week3 C語言習題集

寫在前面 迴圈輸入的數字的基本框架 scanf d c while c 1 題目分割 1奇偶個數 5分 題目內容 你的程式要讀入一系列正整數資料,輸入 1表示輸入結束,1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。輸入格式 一系列正整數,整數的範圍是 0,100000 如果輸入 1則...