《C++Primer》第五版习题解答--第四章【学习笔记】
【C++Primer】第五版习题解答--第四章【学习笔记】
ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考。
作者:cosefy
Date: 2020/1/11
第四章:表达式
练习4.6:
判断奇数:if num%2!=0
练习4.9:
const char* cp = "hello world";
if (cp && *cp)
if语句判断cp表示的字符串以及* cp指向的第一个字符是否都为空。
练习4。10:
实现:为while循环写一个条件,使其从标准输入中读取整数,遇到42时停止。
#include<iostream>
using namespace std;
int main()
{
int i;
while (cin >> i&&i!=42) ;
return 0;
}
练习4.11:
a>b && b>c && c>d
练习4.12:
先判断i<k,返回bool类型,然后判断i是否不等于返回的布尔类型,由于i是整数,故在返回布尔类型和i的比较中,布尔类型会转换为0或1,进行判断,最终返回bool类型的结果。
练习4.13:
赋值运算符运算顺序是从右向左。
(a):值3.5先赋值给int型的i,则i=3,再把i的值赋值给double型d,d=3.0.
(b):值3.5先赋值给double型d,d=3.5,再把d的值赋值给int型i,i=3。
练习4.14:
if(42=i) //字面值不能作为左值,程序将会出错
if(i=42) //i被赋值42,由于i不等于0,故将会执行if块内的程序
练习4.15:
不可以将指针值赋值给int和double型数据。
dval=ival=(* pi)=0;
练习4.16:
(a):赋值运算符的优先级低于关系运算符的优先级。可以给赋值部分语句加上括号。
(b):==写成了=。
练习4.19:
a: 指针ptr不为空,并且ptr指向的值也不为0。
b: ival的值是否为0,同时ival加一后是否为0。
c: 此处求值的顺序是任意的,可能先访问vec[ival],也有可能先进行vec[ival++],得到的判定形式不同。
练习4.20:
a: 合法,先解引用,后自增地址。
b: 不合法,字符串类型无法自增
c: 不合法,iter无法调用empty()
d: 合法,判断iter指向的对象是否为空
e: 不合法,字符串无法自增
f: 合法,先判断所指对象是否为空,再自增地址。
练习4.21:
实现:使用条件运算符从vector中找出奇数并翻倍。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>v1{ 1,2,3,4,5,6,7,8,9 };
for (auto& i : v1)
{
i = i % 2 ? i * i : i;
cout << i << endl;
}
return 0;
}
练习4.22:
实现:输入一个分数,用条件运算符判断分数属于哪个层级。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
unsigned grade;
cin >> grade;
cout << ((grade > 90) ? "high pass" : (grade > 75) ? "pass" : (grade > 60) ? "low pass" : "failed");
return 0;
}
实现:输入一个分数,用一个或多个if语句判断分数属于哪个层级。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
unsigned grade;
cin >> grade;
if (grade > 90)
cout << "high pass";
else if (grade > 75)
cout << "pass";
else if (grade > 60)
cout << "low pass";
else
cout << "failed";
return 0;
}
练习2.23:
因为条件运算符的优先级很低,所以需要给条件运算符的表达式加上括号。
练习4.26:
由于int型在不同机器上位数不同,所以在这个例子中,可能会出现数据溢出的问题。
练习4.27:
a: 3
b: 7
c: 1
d: 1
练习4.29:
#include<iostream>
using namespace std;
int main()
{
int x[10];
int* p = x;
cout << sizeof(x) / sizeof(*x) << endl;
cout << sizeof(p) / sizeof(*p) << endl;
return 0;
}
运行结果:

原因:数组占据空间大小除以每个元素空间大小(40/4=10);指针所占空间大小除以指向元素所占空间大小(4/4=1)。
练习4.33:
someValue为真时,执行
++x,++y;
someValue为假时,执行
--x,--y;
练习4.34:
a: fval转换为bool类型。
b: fval和ival都转化double类型。
c: cval先转化为int型,得到的乘积再转化为double型。
《C++Primer》第五版习题解答--第四章【学习笔记】的更多相关文章
- 《C++Primer》第五版习题答案--第六章【学习笔记】
<C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...
- 《C++Primer》第五版习题答案--第三章【学习笔记】
[C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...
- C++Primer第五版——习题答案和解析
感谢原文博主的分享:https://blog.csdn.net/misayaaaaa/article/details/53786215 新手入门必看的书.知识是一个系统化并且相互关联的体系,零散的东西 ...
- C++Primer第五版——习题答案目录
目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...
- C++Primer第五版——习题答案详解(一)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...
- C++Primer第五版——习题答案详解(二)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...
- C++Primer第五版——习题答案详解(三)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...
- C++Primer第五版——习题答案详解(四)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...
- C++Primer第五版——习题答案详解(五)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...
随机推荐
- Python学习--not语句
布尔型True和False,not True为False,not False为True,以下是几个常用的not的用法: (1) not与逻辑判断句if连用,代表not后面的表达式为False的时候,执 ...
- hdu 1716 排序2(dfs)
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Beta版是什么意思
外部测试版的意思. 软件会出现三种版本 1.alpha内部测试版本,极不稳定,一般也不会出现的公众视线,仅供内部测试人员测试用. 2.beta公共测试版,就是对外发布软件的测试版,收集公众的意见和建议 ...
- 京东基于Spark的风控系统架构实践和技术细节
京东基于Spark的风控系统架构实践和技术细节 时间 2016-06-02 09:36:32 炼数成金 原文 http://www.dataguru.cn/article-9419-1.html ...
- 5-1rquests模拟登陆知乎之httpcode
1,状态码: 400错误:请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里 2,requests库:python常用的库,有空仔细阅读一下官方文档
- 配置gitignore后使其生效命令
改动过.gitignore文件之后,在repo的根目录下运行: git rm -r --cached . git add . 之后可以进行提交: git commit -m "fixed u ...
- win10 uwp 使用 Azure DevOps 自动构建
通过 Azure DevOps 可以做到自动构建程序,覆盖计划.创建.编程.测试.部署.发布.托管.共享等各个环节,适用于大多数的语言.平台. 本文继续使用图床为例告诉大家如何使用 Azure Dev ...
- vue-learning:7-template-v-bind-with-class-and-style
绑定元素样式的指令v-bind:class 和v-bind:style 在HTML元素结构中,class和style特性(attribute)是非常突出的,可以为元素添加样式属性(property). ...
- git常用常用操作指令
GIT操作 1:git init 初始化空的仓库,会在当前文件夹生成一个隐藏.git的文件夹,相当于一个仓库. 2:提交代码的流程:工作代码区-->暂存区 -->主仓库 -->服务器 ...
- CentOS遇到Qt编译问题(error: cannot find -lGL)
1.安装Qt,进入CentOS系统的终端,依次执行以下命令 chmod +x qt-opensource-Linux-x64-5.5.1.run ./qt-opensource-linux-x64-5 ...