【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_1() {
6 using namespace std;
7 double a{0}, b{0};
8 while (true) {
9 cout << "a: ";
10 cin >> a;
11 cout << "b: ";
12 cin >> b;
13 if (!(a&&b))
14 break;
15 cout << "harmonic average: " << ch7_1_harmonicaverage(a, b) << endl;
16 }
17 }
18
19 void ch7_2_in(double * arr, int & len, int max) {
20 using namespace std;
21 for (int i = 0; i < max; ++ i)
22 if (!(cin >> arr[i])) {
23 len = i;
24 break;
25 }
26 len = max;
27 }
28
29 void ch7_2_show(const double * arr, int len) {
30 using namespace std;
31 for (int i = 0; i < len; ++ i)
32 cout << arr[i] << " ";
33 cout << endl;
34 }
35
36 double ch7_2_mean(const double * arr, int len) {
37 double sum{0};
38 for (int i = 0; i < len; ++ i)
39 sum += arr[i];
40 return sum / len;
41 }
42
43 void ch7_2() {
44 using namespace std;
45 const int ArSize = 10;
46 double scores[ArSize]{0};
47 int len{0};
48 cout << "enter scores (max 10, nan to quit)" << endl;
49 ch7_2_in(scores, len, ArSize);
50 cout << "scores: ";
51 ch7_2_show(scores, len);
52 cout << "mean: " << ch7_2_mean(scores, len) << endl;
53 }
54
55 void ch7_3_show(box b) {
56 using namespace std;
57 cout << "box: maker: " << b.maker << " height: " << b.height
58 << " width: " << b.width << " length: " << b.length
59 << " volume: " << b.volume << endl;
60 }
61
62 void ch7_3_setvolume(box * b) {
63 using namespace std;
64 b -> volume = b -> height * b -> width * b -> length;
65 cout << "box volume seted" << endl;
66 }
67
68 void ch7_3() {
69 using namespace std;
70 box b{"xushun", 2, 3, 4};
71 ch7_3_show(b);
72 ch7_3_setvolume(&b);
73 ch7_3_show(b);
74 }
75
76 long double ch7_4_probability(unsigned int numbers, unsigned int picks) {
77 long double result = 1.0;
78 for (int i = numbers, j = picks; j; -- i, -- j)
79 result = result * i /j;
80 return 1 / result;
81 }
82
83 void ch7_4() {
84 using namespace std;
85 long double r = ch7_4_probability(47, 5) * ch7_4_probability(27, 1);
86 cout << "r = " << r << endl;
87 }
88
89 unsigned long long ch7_5_factorial(unsigned long long num) {
90 if (num == 0)
91 return 1;
92 else
93 return num * ch7_5_factorial(num - 1);
94 }
95
96 void ch7_5() {
97 using namespace std;
98 unsigned long long num{0};
99 cout << "enter num to get factorial (nan to quit)" << endl;
100 while (true) {
101 cout << "num: ";
102 if (!(cin >> num))
103 break;
104 cout << "factorial: " << ch7_5_factorial(num) << endl;
105 }
106 }
107
108 unsigned int ch7_6_fillarray(double * arr, unsigned int max) {
109 using namespace std;
110 int i{0};
111 for (i = 0; i < max; ++ i) {
112 cout << "#" << i << ": ";
113 if (!(cin >> arr[i]))
114 break;
115 }
116 return i;
117 }
118
119 void ch7_6_showarray(const double * arr, unsigned int len) {
120 using namespace std;
121 cout << "array: ";
122 for (int i = 0; i < len; ++ i)
123 cout << arr[i] << " ";
124 cout << endl;
125 }
126
127 void ch7_6_reversearray(double * arr, unsigned int len) {
128 double temp{0};
129 for (int i = 0; i < len / 2; ++ i) {
130 temp = arr[i];
131 arr[i] = arr[len - i - 1];
132 arr[len - i - 1] = temp;
133 }
134 }
135
136 void ch7_6() {
137 using namespace std;
138 const unsigned int max = 100;
139 double arr[max]{0};
140 unsigned int len{0};
141 cout << "enter array (nan to quit)" << endl;
142 len = ch7_6_fillarray(arr, max);
143 cout << "array" << endl;
144 ch7_6_showarray(arr, len);
145 cout << "reverse array" << endl;
146 ch7_6_reversearray(arr, len);
147 ch7_6_showarray(arr, len);
148 cout << "reverse array except 1 and len" << endl;
149 ch7_6_reversearray(arr + 1, len - 2);
150 ch7_6_showarray(arr, len);
151 }
152
153 double * ch7_7_fillarray(double * arr, unsigned int max) {
154 using namespace std;
155 for (int i = 0; i < max; ++ i) {
156 cout << "#" << i << ": ";
157 if (!(cin >> arr[i]))
158 return arr + i;
159 }
160 return arr + max - 1;
161 }
162
163 void ch7_7_showarray(const double * arr, double * end) {
164 using namespace std;
165 cout << "array: ";
166 while (arr != end) {
167 cout << *arr << " ";
168 ++ arr;
169 }
170 cout << endl;
171 }
172
173 void ch7_7_revalue(double * arr, double * end, double factor) {
174 while (arr != end) {
175 *arr *= factor;
176 ++ arr;
177 }
178 }
179
180 void ch7_7() {
181 using namespace std;
182 const unsigned int max = 100;
183 double arr[100]{0};
184 double * end = arr;
185 double factor{1};
186 cout << "enter array (nan to quit)" << endl;
187 end = ch7_7_fillarray(arr, max);
188 cout << "array" << endl;
189 ch7_7_showarray(arr, end);
190 cout << "enter factor: ";
191 cin.clear();cin.get();
192 while (!(cin >> factor)) {
193 cin.clear();
194 while (cin.get() != '\n')
195 continue;
196 cout << "factor must be a number: ";
197 }
198 ch7_7_revalue(arr, end ,factor);
199 ch7_7_showarray(arr, end);
200 }
201
202 void ch7_8_fill(double * arr, unsigned int n) {
203 using namespace std;
204 cout << "enter expenses for 4 seasons" << endl;
205 for (int i = 0; i < n; ++ i) {
206 while (!(cin >> arr[i])) {
207 cin.clear();
208 while (cin.get() != '\n')
209 continue;
210 cout << "must number: ";
211 }
212 }
213 }
214
215 void ch7_8_show(const double * arr, unsigned int n) {
216 using namespace std;
217 for (int i = 0; i < n; ++ i)
218 cout << arr[i] << " ";
219 cout << endl;
220 }
221
222 void ch7_8() {
223 using namespace std;
224 const unsigned int snum = 4;
225 const char * SEASONSNAME[] = {"Spring", "Summer", "Fall", "Winter"};
226 double expenses[snum]{0};
227 ch7_8_fill(expenses, snum);
228 ch7_8_show(expenses, snum);
229 }
230
231 void ch7_9() {
232 using namespace std;
233 // 题目太长不看 o.o
234 }
235
236 double ch7_10_calculate(double x, double y, double (* pf)(double, double)) {
237 return pf(x, y);
238 }
239
240 double ch7_10_add(double x, double y) {
241 return x + y;
242 }
243
244 double ch7_10_mul(double x, double y) {
245 return x * y;
246 }
247
248 void ch7_10() {
249 using namespace std;
250 double x{0}, y{0};
251 cout << "enter two double" << endl;
252 cout << "x: ";
253 while (!(cin >> x)) {
254 cin.clear();
255 while (cin.get() != '\n')
256 continue;
257 cout << "must a double: ";
258 }
259 cout << "y: ";
260 while (!(cin >> y)) {
261 cin.clear();
262 while (cin.get() != '\n')
263 continue;
264 cout << "must a double: ";
265 }
266 cout << "x + y == " << ch7_10_calculate(x, y, ch7_10_add) << endl;
267 cout << "x * y == " << ch7_10_calculate(x, y, ch7_10_mul) << endl;
268 }
【C++ Primer Plus】编程练习答案——第7章的更多相关文章
- 【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】编程练习答案——第8章
1 void ch8_1_print(const std::string & str, int n = 0 ) { 2 using namespace std; 3 static int fl ...
- 【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 ...
随机推荐
- Ant高级-path和fileset
一 <path/> 和 <classpath/> 你可以用":"和";"作为分隔符,指定类似PATH和CLASSPATH的引用.Ant会 ...
- Python 3.10 is coming!
看看Python 官网的文档 whatsnew,Python 3.10 已然距离我们越来越近了,然我们看看 Python 3.10 相较于 Python 3.9 有哪些改变吧 新特性 通过括号来组织多 ...
- Faiss使用多线程出现的性能问题
Faiss使用多线程出现的性能问题 faiss在增加CPU的情况下,反而出现效率低下的问题. 从理论上看,作为一个CPU/GPU计算型的应用,更多的核意味着更大的计算吞吐能力,性能只会越来越好才是. ...
- 关于notepad++使用的那些事儿
时间:2019-04-11 整理:PangYuaner 标题:Notepad++正则表达式语法 地址:https://www.cnblogs.com/kekec/p/5255475.html 标题:N ...
- kubebuilder实战之八:知识点小记
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- JVM详解(四)——类加载过程
类加载过程 https://www.cnblogs.com/aqsaycode/p/14885023.html
- Django项目从创建到运行
环境: Windows Server 2008 R2 标准版 1.安装python运行环境(省略) 2.安装Django pip install Django==3.1.5 # 不写版本号也可以 3. ...
- JS边角料: NodeJS+AutoJS+WebSocket+TamperMonkey实现局域网多端文字互传
---阅读时间约 7 分钟,复现时间约 15 分钟--- 由于之前一直在用的扩展 QPush 停止服务了,苦于一人凑齐了 Window, Android, Mac, ios 四种系统的设备,Apple ...
- PULPino datasheet中文翻译并给了部分论文注释(前四章:Overview、Memory Map、CPU Core、Advanced Debug Unit)
参考: (1).PULPino datasheet:https://github.com/pulp-platform/pulpino/blob/master/doc/datasheet/datashe ...
- Windows Server 2022 OVF(SLIC 2.6)
请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:ww ...