c++ primer 4.7节练习答案

本文解析了C++编程中几个典型练习题,包括数组操作、条件判断等,并对比了不同实现方式的优劣,强调了代码可读性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习4.21

 1 int main()
 2 {
 3     int num;
 4     vector<int> a_num;
 5     while (cin >> num)
 6         a_num.push_back(num);
 7     for (auto &c : a_num)
 8     {
 9         (c % 2 != 0) ? (c = c * 2) : (c = c);
10     }
11     for (auto it = a_num.begin(); it != a_num.end(); ++it)
12         cout << *it << endl;
13     system("pause");
14     return 0;
15 }

练习4.22

版本1

 1 int main()
 2 {
 3     vector<int> grades{ 2,12,22,32,42,52,62,72,82,92 };
 4     for (auto c : grades)
 5     {
 6         string str = (c > 90) ? "high pass" : (c > 60) ? ((c < 75) ? "low pass" : "pass") : "fail";
 7         cout << str << endl;
 8     }
 9     system("pause");
10     return 0;
11 }

版本2

 1 int main()
 2 {
 3     vector<int> grades{ 2,12,22,32,42,52,62,72,82,92 };
 4     for (auto c : grades)
 5     {
 6         if (c < 60)
 7             cout << "fail" << endl;
 8         else if (c < 75)
 9             cout << "low pass" << endl;
10         else if (c < 90)
11             cout << "pass" << endl;
12         else
13             cout << "high" << endl;
14     }
15     system("pause");
16     return 0;
17 }

可以很清楚的看到,版本2比版本1更加容易理解,在程序的易读性上更加好,随着条件运算嵌套层数的增加,代码的可读性急剧的下降,因此,条件运算的嵌套最好别超过两到三层。

练习4.23

+运算符的优先级大于==和?:

故这句话被理解为

string p1 = (s + s[s.size() - 1] == 's') ? "" : "s";此时因为string类型不可与char类型进行比较从而编译不了;

可更改为

1 string p1 = s + (s[s.size() - 1] == 's' ? "" : "s");

练习4.24

求值的过程应该跟下面的表达式相同

1     finalgrade = ((grade > 90) ? "high pass" : (grade <60)) ? "fail" : "pass";

 程序会先判断是否大于90,是的话执行前面的,不是的话执行,后面的表达式,此时返回的值为判断式grade< 60的真假值,真即fail,反之亦然。

转载于:https://www.cnblogs.com/wuyinfenghappy/p/7263102.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值