C Primer第四章習題(1 12)

2021-10-13 09:51:26 字數 1562 閱讀 3048

4.1 求表示式 5 + 10 * 20 / 2 的結果

int n = 5 + 10 * 20 / 2;  //105
4.2 在表示式新增括號,使其與原本表達的意思一致

std::vectorvec = ;

std::cout << *vec.begin() << std::endl; // 1

std::cout << *(vec.begin()) << std::endl; // 1

std::cout << *vec.begin() + 1 << std::endl; // 2

std::cout << *(vec.begin() + 1) << std::endl; // 2

4.4 給下面的表示式新增括號,使其符合求值過程

分析:本題主要考察 * %與+的優先順序

int a = 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2;

int b = (((12 / 3) * 4) + (5 * 15)) + ((24 % 4) / 2);

4.5 計算下列各表示式的值

int v1 = -30 * 3 + 21 / 5;  // -86

int v2 = -30 + 3 * 21 / 5; // -18

int v3 = 30 / 3 * 21 % 5; // 0

int v4 =-30 / 3 * 21 % 4; // -2

4.6 判斷乙個數是奇數還是偶數

int a = 0;

if (0 == a % 2)

else

4.8 說明在邏輯與、或及相等性運算子中運算物件的求值順序

在邏輯與、或中會先計算符號左側的運算物件,若根據左側物件的結果無法確定表示式的值,然後會計算右側的物件。(短路求值)

對於相等性運算子的求值順序,c++中沒有明確規定。

4.9 解釋if語句的求值順序

解:遵循短路求值的原則。首先判斷cp是否為nullptr,若是,則最終結果為false,若不是,則計算*cp的值,從而確定最終結果

const char *cp = "hello world";

if (cp && *cp)

4.10 使用while迴圈從標準輸入讀取整數,當為42時,停止讀入

int nnumber = 0;

while (std::cin >> nnumber && 42 != nnumber)

4.11 書寫一條表示式用於計算a,b,c,d四個值的大小,保證a>b>c>d

a > b && b > c && c > d
4.12 假設i、j、k是三個整數,說明表示式 i != j < k 的含義

解:因為《運算子的優先順序高於!=,因此上述表示式等價於 i != (j < k),先計算j

C primer 習題 第四章 1 10

5 10 20 2 105 vec.begin vec.begin vec.begin 1 vec.begin 1 可以接受,效率提高比較難,但是程式的缺陷可以通過努力克服。12 3 4 5 15 24 4 2 30 3 21 5 86 30 3 21 5 18 30 3 21 5 0 30 3 2...

第四章習題

一。填空題 1 基 派生 2 單繼承 多繼承 3 私有繼承方式 4 公有 保護 5 多繼承 6 支配原則 7 解決二義性 8 使用作用域運算子 引進虛基類 二。選擇題 1 5 b cd abc c a 6 10 c b d ad a 三。判斷題 f t f t f f 四。簡答題 1.在物件導向技術...

第四章 習題

一 填空題 1 如類果類a繼承了b,那麼類a被稱為 基類,而類b被稱為 派生類。2 c 的兩種繼承為 單繼承和 多繼承。3 在預設情況下的繼承方式為 私有繼承方式 4 從基類中公有派生乙個類時,基類的公有成員就成為派生類的 公有 成員,而這個基類的保護成員就成為派生類的 保護成員。5 c 提供了 多...