本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter3-ans.html,轉載請注明源地址。
【習題 2.11】
編寫程序,要求用戶輸入兩個數——底數( base)和指數( exponent),輸出底數的指數次方的結果。
#include <iostream> #include <math.h> #include <string> using namespace std; int main( ) { int base, exp; long result=1; cout<<"請輸入底數和指數:"<<endl; cin>>base>>exp; if(exp<0) { cout<<"指數不能為負數!"<<endl; return -1; } for(int i=1; i <= exp; i++) result *= base; cout<<base<<"的"<<exp<<"次方為"<<result<<endl; system("PAUSE"); return 0; }
【習題 3.7】
編一個程序讀入兩個 string 對象,測試它們是否相等。若不相等,則指出兩個中哪個較大。接著,改寫程序測試它們的長度是否相等,若不相等,則指出兩個中哪個較長。
#include <iostream> #include <string> using namespace std; int main( ) { string str1, str2; cin>>str1>>str2; if(str1 == str2) cout<<"str1與str2相等"<<endl; else cout<<"str1與str2不相等"<<endl; system("PAUSE"); return 0; }
【習題 3.8】
編一個程序,從標准輸入讀取多個 string 對象,把它們連接起來存放到一個更大的 string 對象中。並輸出連接後的 string 對象。接著,改寫程序,將連接後相鄰 string 對象以空格隔開。
#include <iostream> #include <string> using namespace std; int main( ) { string str, ss; cout<<"請輸入字符串:\n"; while(cin>>str) ss = ss + str; cout<<"連接後的字符串為:"<<ss<<endl; system("PAUSE"); return 0; }
改寫後的程序:
#include <iostream> #include <string> using namespace std; int main( ) { string str, ss; cout<<"請輸入字符串:\n"; while(cin>>str) ss= ss + ' ' + str; cout<<"連接後的字符串為:"<<ss<<endl; system("PAUSE"); return 0; }
【習題 3.10】
編一個程序,從 string 對象中去掉標點符號。要求輸入到程序的字符串必須含 有標點符號,輸出結果則是去掉標點符號後的 string 對象。
#include <iostream> #include <string> #include <cctype> using namespace std; int main( ) { string str, ss; cout<<"請輸入字符串:\n"; getline(cin, str); for(string::size_type i=0; i!=str.size(); ++i) { if(!ispunct(str[i])) ss+=str[i]; } cout<<"連接後的字符串為:"<<ss<<endl; system("PAUSE"); return 0; }
【習題 3.13】
讀一組整數到 vector 對象,計算並輸出每對相鄰元素的和。如果讀入元素個數為奇數,則提示用戶最後一個元素沒有求和,並輸出其值。
#include <iostream> #include <string> #include <vector> using namespace std; int main( ) { vector<int> vec; int n; while(cin>>n) vec.push_back(n); if(!vec.size()) { cout<<"沒有數字!"<<endl; return -1; } for(vector<int>::size_type i=0; i<vec.size()-1; i+=2) { cout<<vec[i]+vec[i+1]<<"\t"; if((i+1)%6==0) cout<<endl; } if(vec.size()%2!=0) cout<<endl<<"最後一個數是:"<<vec[vec.size()-1]<<endl; system("PAUSE"); return 0; }
【習題 3.14】
讀入一段文本到 vector 對象,每個單詞存儲為 vector 中的一個元素。把 vector 對象中每個單詞轉化為大寫字母。輸出 vector 對象中轉化後的元素, 每八個單詞為一行輸出。
#include <iostream> #include <cctype> #include <string> #include <vector> using namespace std; void replace(string &s) //將字符串中的所有的小寫字符全部轉化為大寫 { for(int i=0; i<s.length(); ++i) { if(islower(s[i])) s[i]=toupper(s[i]); } } int main( ) { int n; string str; vector<string> vec; n=1; cout<<"請輸入一段文本:\n"; while(cin>>str) vec.push_back(str); for(vector<string>::iterator i=vec.begin(); i!=vec.end(); ++i) { replace(*i); cout<<(*i); if(n%8==0) cout<<endl; else cout<<" "; n++; } system("PAUSE"); return 0; }
【習題 3.18】
編寫程序來創建有 10 個元素的 vector 對象。用迭代器把每個元素值改為當前 值的 2 倍,輸出 vector 的所有元素。
#include <iostream> #include <vector> using namespace std; int main( ) { vector<int> vec(10,2); for(vector<int>::iterator it=vec.begin(); it!=vec.end(); it++) { *it=(*it)*2; cout<<(*it)<<" "; } cout<<endl; system("PAUSE"); return 0; }