logo资料库

C++ Primer 第五版 课后习题答案(高清无水印PDF).pdf

第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
资料共78页,剩余部分请下载后查看
《C++ Primer》5th IDE:Visual Studio 2015 20th 毛金勇 目录 第 1 章 开始 ............................................................................................................................. 1 第 3 章 字符串、向量和数组 ................................................................................................. 5 第 4 章 表达式 ....................................................................................................................... 15 第 5 章 语句 ........................................................................................................................... 16 第 6 章 函数 ........................................................................................................................... 23 第 7 章:类 ............................................................................................................................. 32 第 8 章:IO 库 ........................................................................................................................ 32 第 9 章 顺序容器 ................................................................................................................... 38 第 10 章:泛型算法 ............................................................................................................... 53 第 11 章:关联容器 ............................................................................................................... 68 第 1 章 开始 P8 练习 1.3 #include int main() { std::cout << "Hello,World." << std::endl; return 0; } 练习 1.4 #include int main() { int v1,v2; std::cin >> v1 >> v2; std::cout << "The sum of "<< v1 <<" and "<< v2 << " is " << v1*v2 << std::endl; return 0; } 练习 1.6 #include int main() { int v1,v2;
std::cin >> v1 >> v2; std::cout << "The sum of "<< v1; <<" and "<< v2; << " is " << v1+v2 << std::endl; return 0; } 以上程序是不合法的。原因在于:<<运算符接受两个运算对象,左侧的运算对象必须是一个 ostream 对象,右侧的运算对象是要打印的值。 因此应该修改为: #include int main() { int v1,v2; std::cin >> v1 >> v2; std::cout << "The sum of "<< v1; std::cout <<" and "<< v2; std::cout << " is " << v1+v2 << std::endl; return 0; } 或者,去掉分号,只保留最后一个 #include int main() { } int v1,v2; std::cin >> v1 >> v2; std::cout << "The sum of "<< v1 <<" and "<< v2 << " is " << v1+v2 << std::endl; return 0; P9 练习 1.9 #include int main() { } int sum = 0, val = 50; while(val <= 100){ sum += val; ++val; } std::cout << "Sum of 50 to 100 is " << sum << std::endl; return 0;
练习 1.10 #include int main() { int val = 10; while(val >= 0){ std::cout << val << " "; --val; } return 0; } 练习 1.11 #include int main() { } int v1,v2; std::cout << "Please enter two numbers" << std::endl; std::cin >> v1 >> v2; if(v1 > v2){ std::cout << "ERROR!" << std::endl; } while(v1 <= v2){ std::cout << v1 << " "; ++v1; } return 0; P15 练习 1.16 /*读取数量不定的输入数据*/ #include int main() { } int sum = 0,val; while(std::cin >> val){ //输入文件结束符的方法是:Ctrl+Z 然后按 Enter sum += val; } std::cout << "Sum is: " << sum << std::endl; return 0; P16 练习 1.18 /*统计在输入中每个值连续出现的次数*/ #include
int main() { int currVal = 0,val = 0; if(std::cin >> currVal){ int cnt = 1; while(std::cin >> val){ if(val == currVal) ++cnt; else{ } std::cout << currVal << " occurs " << cnt << " times." << std::endl; currVal = val;//记住新值 cnt = 1;//重置计数器 } //打印文件最后一个值的个数 std::cout << currVal << " occurs " << cnt << " times." << std::endl; } return 0; } P20 练习 1.20(先下载头文件 Sales_item.h) #include #include"Sales_item.h" int main() { Sales_item book; while(std::cin >> book){ std::cout << book << std::endl; } return 0; } 练习 1.21 #include #include"Sales_item.h" int main() { Sales_item item1,item2; std::cin >> item1 >> item2; std::cout << item1+item2 << std::endl; return 0; } 练习 1.22 #include #include"Sales_item.h"
int main() { } Sales_item book,total; while(std::cin >> book){ total += book; } std::cout << total << std::endl; return 0; P21 练习 1.23 & 1.24(思路和练习 1.18 很像的) #include #include"Sales_item.h" int main() { Sales_item total; if(std::cin >> total){ Sales_item temp; while(std::cin >> temp){ if(total.isbn() == temp.isbn()){ total += temp; }else{ std::cout << total << std::endl; total = temp; } } std::cout << total << std::endl; } return 0; } 第 3 章 字符串、向量和数组 P81 练习 3.2 #include #include using namespace std; int main() { string s1; getline(cin,s1);//读入一整行,包括空白符,遇到换行符则停止 cout << s1 << endl; string s2;
while(cin >> s2){//读取数量未知的 string 对象 cout << s2 << endl; } return 0; } 练习 3.4 #include #include using namespace std; int main() { string s1,s2; cin >> s1 >> s2; if(s1 != s2){//输出较大的字符串 if(s1 > s2) cout << s1 << endl; if(s1 < s2) cout << s2 << endl; } if(s1.size() != s2.size()){//输出较长的字符串 if(s1.size() > s2.size()) cout << s1 << endl; if(s1.size() < s2.size()) cout << s2 << endl; } return 0; } 练习 3.5 #include #include using namespace std; int main() { } string strPart,strTotal; while(cin >> strPart){ strTotal += strPart + " "; } cout << strTotal << endl; return 0; P86 练习 3.6/3.7/3.8 #include "stdafx.h" #include #include using namespace std; int main() {
string s; cin >> s; //使用范围 for 语句 for (auto &c : s) { c = 'X'; } cout << s << endl; for (char &c : s) { c = 'X'; } cout << s << endl; //使用下标迭代 for (decltype(s.size()) index = 0; index != s.size(); ++index) { s[index] = 'X'; } cout << s << endl; return 0; } 练习 3.10 #include "stdafx.h" #include #include using namespace std; int main() { string s; getline(cin, s); for (decltype(s.size()) i = 0; i != s.size(); ++i) { if (!ispunct(s[i])) cout << s[i];//如果不是标点符号,就输出 } cout << endl; return 0; } P90 练习 3.13(验证) #include "stdafx.h" #include #include #include using namespace std; int main() { vector v1;
vector v2(10); vector v3(10, 42); vector v4{ 10 }; vector v5{ 10,42 }; vector v6{ 10 }; vector v7{ 10,"hi" }; cout << v1.size() << endl; for (int i = 0; i != v1.size();++i) { cout << v1[i] << " "; } cout << endl; cout << v2.size() << endl; for (int i = 0; i != v2.size(); ++i) { cout << v2[i] << " "; } cout << endl; cout << v3.size() << endl; for (int i = 0; i != v3.size(); ++i) { cout << v3[i] <<" "; } cout << endl; cout << v4.size() << endl; for (int i = 0; i != v4.size(); ++i) { cout << v4[i] << " "; } cout << endl; cout << v5.size() << endl; for (int i = 0; i != v5.size(); ++i) { cout << v5[i] << " "; } cout << endl; cout << v6.size() << endl; for (int i = 0; i != v6.size(); ++i) { cout << v6[i] << " "; } cout << endl; cout << v7.size() << endl; for (int i = 0; i != v7.size(); ++i) { cout << v7[i] << " "; } cout << endl; return 0; } 输出为:
分享到:
收藏