C++Primer第五版——習題答案詳解(三)



習題答案目錄:https://www.cnblogs.com/Mered1th/p/10485695.html

第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<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
	vector<int> 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<iostream>
#include<string>
#include<vector>
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<iostream>
#include<string>
#include<vector>
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
后置版本需要將值先保存下來后再自增。


不斷學習中,歡迎交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM