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...