《C++primer》第四章课后习题

在这里插入图片描述

练习4.1

答:105

练习4.2

*(vec.begin())
*(vec.begin())+1

在这里插入图片描述

练习4.3

答:可以接受,这样可以提高编译效率
在这里插入图片描述

练习4.4

答:((12/3)4)+((515)+(24%4)/2),最终值为91

练习4.5

答:a:-86,b:-18,c:0,d:2

练习4.6

if(a%2==0)

练习4.7

溢出指计算结果超出该类型所能表示的范围

short a = 32768;
short b = 32767;
b+=1;
short c = a + b;

在这里插入图片描述

练习4.8

答:相等性运算符优先级高于逻辑与、逻辑或。

练习4.9

答:先判断指针cp是否为空指针,若不为空指针,则判断cp指向的对象是否为空字符串

练习4.10

#include <iostream>
using namespace std;
int main()
{
	int a;
	while (cin >> a)
		if (a == 42)
			break;
	return 0;
}

练习4.11

if(a>b&&b>c&&c>d)

练习4.12

答:先判断i是否等于j,然后返回布尔值,再与k比较大小
在这里插入图片描述

练习4.13

答:a:d = 3,i= 3;b:d = 3.5,i= 3;

练习4.14

答:第一句报错,表达式左侧必须为可修改的左值;第二句条件永远为真

练习4.15

答:pi为指针,不能被赋予常量,可修改为:

double dval;
int ival;
int *pi;
dval = ival = 0;
pi = ival;

练习4.16

答:因为赋值运算符优先级较低,所以通常需要加括号才能表达正确的意图

if((p = getPtr())!=0)
if(i==1024)

在这里插入图片描述

练习4.17

答:前置为先递增后赋值,后置为先赋值后递增

练习4.18

答:最后一次循环将会操作vector对象的尾后元素。

练习4.19

ptr!=0&&*(ptr++)
//第二句先判断ival是否为零,再判断ival+1是否为0
//第三句比较vector对象中ival的下一个对象是否小于第ival个元素

在这里插入图片描述

练习4.20

答:a合法指向vector对象的下一个元素;b合法,将iter值加一;c错误,应为(*iter);d合法,判断iter是否为空;e合法,将iter值加一;f合法,判断iter下一个元素是否为空
在这里插入图片描述

练习4.21

#include <iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> a = { 1,2,3,4,5,6 };
	for (auto& b : a)
		if (b % 2 != 0)
			b *= 2;
	return 0;
}

练习4.22

finalgrade = (grade>90)?"high pass":(grade>75)?"pass":(grade>60)?"low pass":"fail";
//
if(grade>90)
	cout<<"high pass"<<endl;
else if(grade>75)
	cout<<"pass"<<endl;
else if(grade>60)
	cout<<"low pass"<<endl;
else
	cout<<"fail"<<endl;

练习4.23

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

练习4.24

答:若成绩小于九十,则执行(grade<60)
在这里插入图片描述

练习4.25

答:10001110000000前面补0至32位

练习4.26

答:可能会导致位不够

练习4.27

答:a:011,b:111,c:1,d:1;
在这里插入图片描述

练习4.28

#include <iostream>
using namespace std;
int main()
{
	auto a = sizeof(int);
	auto b = sizeof(long);
	auto c = sizeof(long long);
	auto d = sizeof(unsigned);
	auto f = sizeof(float);
	auto g = sizeof(double);
	auto h = sizeof(long double);
	auto i = sizeof(short);
	auto j = sizeof(char);
	auto k = sizeof(bool);
	auto l = sizeof(wchar_t);
	auto m = sizeof(char16_t);
	auto n = sizeof(char32_t);
	cout << a << " " << b << " " << c << " " << d << " " << f << " " << g << " " << h << " " << i << " " << j << " " << k << " " << l << " " << m << " " << n << " " << endl;
	return 0;
}

练习2.29

答:输出为10,2在这里插入图片描述

练习2.30

答:sizeof(x+y);sizeof(p->mem[i]);sizeof(a)<b;sizeof(f())
在这里插入图片描述

练习4.31

答:逗号运算符首先对左侧表达式求值。然后将求值结果丢掉。

vector<int>::size_type cnt = ivec.size();
	for (vector<int>::size_type ix = 0; ix != ivec.size();  --cnt)
	{	
		ix++;
		ivec[ix] = cnt;
	}

练习4.32

答:遍历数组

练习4.33

答:someValue是否为1,是则递增xy,否则递减xy
在这里插入图片描述

练习4.34

答:a转换为布尔;b,ival转换为float,最后结果转换为double;c均转换为double

练习4.35

答:a,字符a转换为int;b,ui转换为double;c转换为double;d先转化为double再转换为char

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值