习题答案目录:
第4章 表达式
练习4.10
while(cin>>i&&i!=42)
练习4.11
a>b && b>c && c>d
练习4.12
<的优先级大于!=,所以先判断j<k,返回bool类型,再比较返回值和i是否相等练习4.13
i=3 d=3 i=3 d=3.5练习4.14
非法、if判断为真练习4.15
非法,指针指向的是地址,不能赋值,把pi改为*pi练习4.19
a.指针ptr不为空,且所指的值不为0 b.判断ival和ival的值是否为0,执行完if后ival才加1 c.判断vec[ival]是否小于等于vec[ival],同上练习4.20
a.合法,对iter解引用,再自增 b.不合法,*iter为字符串,不能自增 c.不合法,没有empty()成员 d.合法,iter所指向的值是否为空 e.不合法,字符串不能自增 f.合法,先判断是否为空再自增练习4.21
#include#include #include using namespace std;int main() { vector vec = { 1,2,3,4,5,6,7 }; for (auto i = 0;i < vec.size();i++) { vec[i] = vec[i] % 2 ? vec[i] * 2 : vec[i]; } for (auto i : vec) { cout << i << " "; } system("pause"); return 0;}
练习4.22
if语句更合适,层次分明。#include#include #include using namespace std;int main() { int grade; while (cin >> grade) { string finalgrade = (grade >= 90) ? "high pass" : (grade >= 75) ? "pass" : (grade >= 60) ? "low pass" : "fail"; cout << finalgrade << endl; } system("pause"); return 0;}
#include#include #include using namespace std;int main() { int grade; while (cin >> grade) { 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; } system("pause"); return 0;}
练习4.23
改为string p1 = s + (s[s.size() - 1] == 's') ? "" : "s";
练习4.29
前者为整个数组所占空间的大小除以每个元素所占空间大小40/4=10; 后者为指针所占大小除以每个元素所占空间大小4/4=1;练习4.30
a.(sizeof x) +y b.sizeof(p->mem[i]) c.(sizeof a) <b d.sizeof(f())练习4.31
后置版本需要将值先保存下来后再自增。不断学习中,欢迎交流!