【C++ Primer Plus】编程练习答案——第8章
1 void ch8_1_print(const std::string & str, int n = 0 ) {
2 using namespace std;
3 static int flag = 0;
4 ++ flag;
5 if (!n)
6 cout << str << endl;
7 else {
8 for (int i = flag; i; -- i)
9 cout << str << endl;
10 }
11 }
12 void ch8_1() {
13 using namespace std;
14 string str{"ch8_1"};
15 ch8_1_print(str);
16 ch8_1_print(str, 100);
17 }
18
19 void ch8_2_setvalue(CandyBar & bar, const char * bd = "Millennium Munch", double w = 2.85, unsigned long k = 350) {
20 strcpy(bar.brand, bd);
21 bar.weight = w;
22 bar.kll = k;
23 }
24
25 void ch8_2_show(const CandyBar & bar) {
26 using namespace std;
27 cout << "brand: " << bar.brand << endl;
28 cout << "weight: " << bar.weight << endl;
29 cout << "energy: " << bar.kll << endl;
30 }
31
32 void ch8_2() {
33 using namespace std;
34 CandyBar bar;
35 cout << "default value: " << endl;
36 ch8_2_setvalue(bar);
37 ch8_2_show(bar);
38 char s[] = "nnn";
39 double w = 100.123;
40 unsigned long k = 1234;
41 cout << "reset value: " << endl;
42 ch8_2_setvalue(bar,s,w,k);
43 ch8_2_show(bar);
44 }
45 void ch8_3_str2upper(std::string & str) {
46 for (int i = 0; i < str.size(); ++ i)
47 str[i] = toupper(str[i]);
48 }
49 void ch8_3() {
50 using namespace std;
51 string s;
52 while (true) {
53 cout << "enter string(q to quit): ";
54 getline(cin, s);
55 if (s == "q")
56 break;
57 ch8_3_str2upper(s);
58 cout << "upper: " << s << endl;
59 }
60 }
61
62 void ch8_4_set(stringy & sy, const char * str) {
63 sy.str = new char[strlen(str)];
64 strcpy(sy.str, str);
65 sy.ct = strlen(str);
66 }
67
68 void ch8_4_show(const stringy & sy, int n = 0) {
69 using namespace std;
70 if (!n)
71 cout << sy.str << endl;
72 else {
73 for (int i = 0; i < n; ++ i)
74 cout << sy.str[i];
75 cout << endl;
76 }
77 }
78
79 void ch8_4_show(const char * str, int n = 0) {
80 using namespace std;
81 if (!n)
82 cout << str << endl;
83 else {
84 for (int i = 0; i < n; ++ i)
85 cout << str[i];
86 cout << endl;
87 }
88 }
89
90 void ch8_4() {
91 using namespace std;
92 stringy beany;
93 char testing[] = "Reality isn't what it used to be.";
94 ch8_4_set(beany, testing);
95 ch8_4_show(beany);
96 ch8_4_show(beany, 2);
97 testing[0] = 'D';
98 testing[1] = 'u';
99 ch8_4_show(testing);
100 ch8_4_show(testing, 3);
101 ch8_4_show("Done!");
102 }
103
104 template <typename T>
105 unsigned int ch8_5_max(const T * arr) {
106 unsigned int max_index = 0;
107 for (int i = 1; i < 5; ++ i)
108 if (arr[i] > arr[max_index])
109 max_index = i;
110 return max_index;
111 }
112
113 void ch8_5() {
114 using namespace std;
115 int arr_int[5]{1,3,5,2,4};
116 double arr_dou[5]{3.14,2.14,5.12,8.12,10.30};
117 cout << "max int: " << arr_int[ch8_5_max(arr_int)] << endl;
118 cout << "max dou: " << arr_dou[ch8_5_max(arr_dou)] << endl;
119 }
120
121 template <typename T>
122 T ch8_6_maxn(T * arr, unsigned int n) {
123 int max_index = 0;
124 for (int i = 1; i < n; ++ i)
125 if (arr[i] > arr[max_index])
126 max_index = i;
127 return arr[max_index];
128 }
129
130 template <> char * ch8_6_maxn<char *>(char * arr[], unsigned int n) {
131 int max_index = 0;
132 for (int i = 1; i < n; ++ i)
133 if (strlen(arr[i]) - strlen(arr[max_index]) > 0)
134 max_index = i;
135 return arr[max_index];
136 }
137
138 void ch8_6() {
139 using namespace std;
140 int arr_int[6]{1,2,3,4,5,6};
141 double arr_dou[4]{1.1,2.2,3.3,4.4};
142 char * arr_str[5]{
143 "h", "he", "hel", "hell", "hello"
144 };
145 cout << "max double: " << ch8_6_maxn(arr_int, 6) << endl;
146 cout << "max int : " << ch8_6_maxn(arr_dou, 4) << endl;
147 cout << "max str : " << ch8_6_maxn(arr_str, 5) << endl;
148 }
149
150 template <typename T>
151 T ch8_7_sumarray(T * arr, int n) {
152 T sum{0};
153 for (int i = 0; i < n; ++ i)
154 sum += arr[i];
155 return sum;
156 }
157
158 template <typename T>
159 T ch8_7_sumarray(T * arr[], int n) {
160 T sum{0};
161 for (int i = 0; i < n; ++ i)
162 sum += * arr[i];
163 return sum;
164 }
165
166 void ch8_7() {
167 using namespace std;
168 int things[6]{13,31,103,301,310,130};
169 debts mr_E[3]{
170 {"Ima Wolfe", 2400.0},
171 {"Ura Foxe", 1300.0},
172 {"Iby Stout", 1800.0}
173 };
174 double * pd[3];
175 for (int i = 0; i < 3; ++ i)
176 pd[i] = &mr_E[i].amount;
177 cout << "sum of things: " << ch8_7_sumarray(things, 6) << endl;
178 cout << "sum of debts: " << ch8_7_sumarray(pd, 3) << endl;
179 }
【C++ Primer Plus】编程练习答案——第8章的更多相关文章
- 【C++ Primer Plus】编程练习答案——第12章
1 // chapter12_1_cow.h 2 3 4 #ifndef LEARN_CPP_CHAPTER12_1_COW_H 5 #define LEARN_CPP_CHAPTER12_1_COW ...
- 【C++ Primer Plus】编程练习答案——第11章 (待更新)
最近开学,事情较多,过两天更新...
- 【C++ Primer Plus】编程练习答案——第10章
1 // chapter10_1_account.h 2 3 #ifndef LEARN_CPP_CHAPTER10_1_ACCOUNT_H 4 #define LEARN_CPP_CHAPTER10 ...
- 【C++ Primer Plus】编程练习答案——第9章
1 // chapter09_golf.h 2 3 #ifndef LEARN_CPP_CHAPTER09_GOLF_H 4 #define LEARN_CPP_CHAPTER09_GOLF_H 5 ...
- 【C++ Primer Plus】编程练习答案——第7章
1 double ch7_1_harmonicaverage(double a, double b) { 2 return 2 / (1 / a + 1 / b); 3 } 4 5 void ch7_ ...
- 【C++ Primer Plus】编程练习答案——第6章
1 void ch6_1() { 2 using namespace std; 3 char ch; 4 while ((ch = cin.get()) != '@') { 5 if (isdigit ...
- 【C++ Primer Plus】编程练习答案——第5章
1 void ch5_1() { 2 using namespace std; 3 int small, big, sum{0}; 4 cout << "enter small ...
- 【C++ Primer Plus】编程练习答案——第4章
1 void ch4_1() { 2 using namespace std; 3 string fname, lname; 4 char grade; 5 unsigned int age; 6 c ...
- 【C++ Primer Plus】编程练习答案——第3章
1 void ch3_1() { 2 using namespace std; 3 unsigned int factor = 12; 4 unsigned int inch, feet; 5 cou ...
随机推荐
- Go测试--main测试
目录 简介 示例 简介 子测试的一个方便之处在于可以让多个测试共享Setup和Tear-down.但这种程度的共享有时并不满足需求,有时希望在整个测试程序做一些全局的setup和Tear-down,这 ...
- Java如何调用C语言程序,JNI技术
Java为什么要调用C语言编写的程序因为涉及操作系统底层的事件,Java是处理不了的,例如用户上传一个视频文件,需要后台给视频加上水印,或者后台分离视频流和音频流,这个事Java就做不了,只能交给C语 ...
- rabbitMQ重复消费(结合死循环重发那一篇看)
/** * 重复消费逻辑判断与处理 */ @Component public class RepeatMqConsumer { /** * 服务对象 */ private int count=1; @ ...
- Mysql基本知识整理
一.简介 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 2.关系型数据库 ...
- 速查列表:Apache SkyWalking OAL 的 域(Scopes)
OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...
- Python命名空间——locals()函数和globals()函数及局部赋值规则
Python使用叫做命名空间的东西来记录变量的轨迹.命名空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,命名空间可以象Python的字典一样进行访问,一会我们就会看到. 在一 ...
- 五分钟搞懂MySQL索引下推
大家好,我是老三,今天分享一个小知识点--索引下推. 如果你在面试中,听到MySQL5.6"."索引优化" 之类的词语,你就要立马get到,这个问的是"索引下推 ...
- 20210819 Emotional Flutter,Medium Counting,Huge Counting,字符消除2
考场 T1 一下想到了这题,将白块缩短 \(s\) 后维护类似的区间即可. T2 T3 俩计数,直接跳了. T4 的可行 \(t\) 集合相同相当与从 \(n\) 往前跳 kmp 数组,途径点相同,从 ...
- Mysql 面试宝典
实时更新 你用过哪些数据库? mysql redis mysql 和 redis 的区别? 比较点 Mysql Redis 数据库类型 关系型 非关系型 作用 持久化层 存储需要持久化的数据,数据存在 ...
- 1.深入TiDB:初见TiDB
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/584 本篇文章应该是我研究的 TiDB 的第一篇文章,主要是介绍整个 ...