第四章 4.6节练习 & 4.7节练习
来源:互联网 发布:node readline 编辑:程序博客网 时间:2024/06/05 11:00
练习4.20
假设iter的类型是vector<string>::iterator,说明下面的表达式是否合法。如果合法,表达式的含义是什么?如果不合法,错在何处?
(a) *iter++
(b) (*iter)++
(c) *iter.empty()
(d) iter->empty()
(e) ++*iter
(f) iter++->empty();
解答:
(a) 合法。使用当前迭代器指向的字符串,并将迭代器做向后偏移的操作
(b) 合法。使用当前迭代器指向的字符串,并将该数自加1
(c) 非法。‘.’操作符要比*操作符的优先级高,但是iter不是一个string对象
(d) 合法。查看当前迭代器指向的字符是否为空
(e) 非法。这里先对iter进行解引用,在对对象进行自加操作。不过string对象不支持自加操作符
(f) 合法。先判断当前迭代器指向的字符是否为空,然后对迭代器做偏移操作。
练习4.21
编写一段程序,使用条件运算符从vector<int>中找到哪些元素是基础,然后将这些奇数翻倍。
解答:
#include <iostream>#include <vector>using namespace std;int main(){vector<int> ivec{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };for (auto i : ivec){cout << ((i % 2) ? i * 2 : i) << endl;}}
练习4.22
本节的示例程序将成绩划分成high pass、pass和fail三种,扩展该程序使其进一步将60分到75分之间的成绩设计成low pass。要求程序包含两个版本:一个版本只使用条件运算符;另外一个版本使用1个或多个if语句。那个版本更容易理解呢?为什么?
解答:
string finalgrade = grade > 90 ? "high pass" : (grade < 60) ? "fail" : (grade > 75) : "low pass" : "pass";
if (grade > 90){finalgrade = "high pass";}else if (60 < grade && grade < 75){finalgrade = "low pass";}else if (grade < 60){finalgrade = "fail";}else{finalgrade = "pass";}这里肯定是if语句的好理解。
层次很分明,看的很清楚。
练习4.23
因为运算符的优先级问题,下面这条表达式无法通过编译。根据4.12节中的表指出它的问题在哪里?应该如何修改?
string s = "word";
string pl = s + s[s.size() -1] == 's'? "" : "s";
解答:
这里+运算符的优先级要比==号高。
string pl = s + (s[s.size() -1] == 's'? "" : "s");
练习4.24
本节的示例程序将成绩划分成high pass、pass和fail三种,他的依据是条件运算符满足右结合律。假如条件运算符满足的是左结合律,求值过程将是怎样的?
解答:
会从表达式的尾部开始进行条件判断。最后判断grade>90,结果和之前没有区别。
- 第四章 4.6节练习 & 4.7节练习
- 第四章 4.2节练习
- 第四章 4.3节练习
- 第四章 4.4节练习
- 第四章 4.5节练习
- 第四章 4.8节练习
- 第四章 4.9节练习
- 第四章 4.10节练习
- 第四章 4.1.2节练习 & 4.1.3节练习
- 第四章 4.11.1节练习
- 第四章 4.11.3节练习
- 第四章例题练习
- 第四章 编程练习
- 第四章编程练习
- 人力资源第四章练习解答
- simply scheme 第四章 练习
- 第四章上机练习5
- 书本第四章编程练习
- 使用临时变量提高Java代码性能 (转)
- 黑马程序员-@property与@synthesize的用法
- spring、ibatis 整合
- 【算法】统计qq一天中每秒在线人数
- Redis如何处理客户端连接
- 第四章 4.6节练习 & 4.7节练习
- 设计模式(一)The Strategy Pattern 策略模式
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
- 国内第一个 Spark系列视频课程
- 汉若塔问题的迭代解法
- 【设计模式】单例模式
- SSO 基于Cookie+fliter实现单点登录(SSO):工作原理
- IOS开发之手势
- hadoop1.1.2 伪分布式安装