C Primer第五版 第五章 程式設計題

2021-09-19 12:52:44 字數 4394 閱讀 4011

5.9:編寫一段程式,使用一系列if語句統計從cin讀入的文字中有多少母音字母。

#include void main()

std::cout << "a:" << acnt << std::endl;

std::cout << "e:" << ecnt << std::endl;

std::cout << "i:" << icnt << std::endl;

std::cout << "o:" << ocnt << std::endl;

std::cout << "u:" << ucnt << std::endl;

system("pause");

}

5.10:之前實現的統計母音字母的程式存在乙個問題:如果母音字母以大寫形式出現,不會被統計在內。編寫一段程式,既統計母音字母的小寫形式,也統計大寫形式,也就是說,新程式遇到'a'和'a'都應該遞增acnt的值,以此類推。

#include void main()

} std::cout << "a:" << acnt << std::endl;

std::cout << "e:" << ecnt << std::endl;

std::cout << "i:" << icnt << std::endl;

std::cout << "o:" << ocnt << std::endl;

std::cout << "u:" << ucnt << std::endl;

system("pause");

}

5.11:修改統計母音字母的程式,使其也能統計空格、製表符和換行符的數量。

#include void main()

} std::cout << "a:" << acnt << std::endl;

std::cout << "e:" << ecnt << std::endl;

std::cout << "i:" << icnt << std::endl;

std::cout << "o:" << ocnt << std::endl;

std::cout << "u:" << ucnt << std::endl;

std::cout << "space:" << spacecnt << std::endl;

std::cout << "tab:" << tabcnt << std::endl;

std::cout << "new:" << newcnt << std::endl;

system("pause");

}

5.12:修改統計母音字母的程式,使其能統計以下含有兩個字元分字串行的數量:ff、fl和fi。

#include void main()

ch_before = ch; //將當前字元賦給ch_before,再判斷下一字元

} std::cout << "ff:" << ffcnt << std::endl;

std::cout << "fl:" << flcnt << std::endl;

std::cout << "fi:" << ficnt << std::endl;

system("pause");

}

5.14:編寫一段程式,從標準輸入中讀取若干string物件並查詢連續重複出現的單詞。所謂連續重複出現的意思是:乙個單詞後面緊跟著這個單詞本身。要求記錄連續重複出現的最大次數以及對應的單詞。如果這樣的單詞存在,輸出重複出現的最大次數;如果不存在,輸出一條資訊說明任何單詞都沒有連續出現過。例如:如果輸入是

how now now now brown cow cow

那麼輸出應該表明單詞now連續出現了3次。

#include #include void main()

else if (cnt > max)

else //cnt < max時,cnt=1,max不變

cnt = 1;

if (cnt > max)

str_before = str;

} if (max == 1)

std::cout << "沒有重複單詞出現" << std::endl;

else

std::cout << ss << ": " << max << std::endl;

system("pause");

}

上述**可以統計出重複次數最多的單詞和次數,但如果有多個單詞重複次數相同且最多,只能輸出乙個單詞及其重複次數,因此,考慮用vector物件儲存重複出現的單詞和次數。改進之後的**如下:

#include #include #include void main()

str_before = str;

} if (cnt!=1)

int max = 0;

for (int i = 0; i < ivec.size();++i)

if (max > 1)

} else

std::cout << "沒有重複的單詞出現" << std::endl;

system("pause");

}

5.17:假設有兩個包含整數的vector物件,編寫一段程式,檢驗其中乙個vector物件是否是另乙個的字首。為了實現這一目標,對於兩個不等長的vector物件,只需挑出長度較短的那個,把它的所有元素和另乙個vector物件比較即可。例如,如果兩個vector物件的元素分別是0、1、1、2和0、1、1、2、3、5、8,則程式的返回結果應該為真。

#include #include void main()

; std::vectorivec2 = ;

int size = ivec1.size() < ivec2.size() ? ivec1.size() : ivec2.size();

int i = 0;

for (; i < size; ++i)

} if (i == size)

std::cout << "true" << std::endl;

system("pause");

}

5.19:編寫一段程式,使用do while迴圈重複地執行下述任務:首先提示使用者輸入兩個string物件,然後挑出較短的那個並輸出它。

#include #include void main()

while (std::cin);

system("pause");

}

5.20:編寫一段程式,從標準輸入中讀取string物件的序列直到連續出現兩個相同的單詞或所有單詞都讀完為止。使用while迴圈一次讀取乙個單詞,當乙個單詞連續出現兩次時使用break語句終止迴圈。輸出連續重複的單詞,或者輸出乙個訊息說明沒有任何單詞是連續重複出現的。

#include #include void main()

str_before = str;

} if (flag)

std::cout << "沒有單詞連續重複出現" << std::endl;

system("pause");

}

5.21:修改5.20的程式,使其找到的重複單詞必須以大寫字母開頭。

#include #include void main()

else

continue;

} str_before = str;

} if (flag)

std::cout << "沒有單詞連續重複出現" << std::endl;

system("pause");

}

5.23:編寫一段程式,從標準輸入讀取兩個整數,輸出第乙個數除以第二個數的結果。

#include void main()

5.24:修改你的程式,使得當第二個數是0時丟擲異常。

#include void main()

#include void main()

catch (std::runtime_error err)

} system("pause");

}

c primer 第五版課後習題 第五章

第五章主要講了函式 include include include include using namespace std void test 5 9 std cout 母音字母個數為 t cnt endl void test 5 10 std cout 母音字母a的個數為 t cnt a endl...

《C程式設計(第五版)》譚浩強編著 習題 第五章

include include intmain 最大公約數 for i a i 1 i 最小公倍數 for j b j a b j printf 最大公約數為 d n maxdivisor printf 最小公倍數為 d n 英文本母個數為 d n letter printf 空格個數為 d n s...

C primier(第五版)第五章讀書筆記

case語句塊 int i 30 switch i break default break 非法如果在某處乙個帶有初值的變數位於作用域之外,在另一處該變數位於作用域之內,則從前一處跳轉到後一處行為時非法行為,如果一定要使用這樣的方法,在case,default之後使用 語句塊。int main tr...