C Primer(第四版)答案之第三章

2021-09-24 20:59:43 字數 2818 閱讀 6750

#include using std::cin;

using std::cout;

using std::endl;

int main()

所謂預設建構函式是指,當沒有初始化值作為引數的時候,物件調研的建構函式。

#include #include using std::cin;

using std::cout;

using std::endl;

using std::string;

int main()

都是空字串。string是類型別,都會呼叫預設建構函式。這和內建型別的初始化行為不同。

每次讀取一行文字

#include #include using std::cin;

using std::cout;

using std::endl;

using std::string;

int main()

每次讀取乙個單詞

#include #include using std::cin;

using std::cout;

using std::endl;

using std::string;

int main()

string型別的》操作符,只取第乙個非空格字元開始到第乙個空格字元為止。

getline擷取一行(不包括回車換行符),不刪除行首的空格字元。

#include #include #include #include #include using namespace std;

int main()

if(a.size() == b.size())

printf("size equal\n");

else

printf("size, %s is longer\n", a.size()>b.size()?a.c_str():b.c_str());

return 0;

}

ctrl+d,或者ctrl+z都不能退出迴圈,這是咋回事?

#include using namespace std;

int main()

cout << total << endl;

return 0;

}

以空格隔開

#include using namespace std;

int main()

cout << total << endl;

return 0;

}

想輸出字串的第乙個字元,但是字串為空,所以下標訪問溢位,非法。

#include using namespace std;

int main()

for(vector::size_type i=0; i::size_type i=0; i不合法。由於ivec是個空的vector,這是賦值給乙個不存在的元素,必定導致執行時錯誤。

改為ivec.push_back(42)。

一般有4中定義方式:

a 是先定義乙個空vector,然後動態新增

b 是直接初始化為10個42

c 是從乙個vector初始化

d 是先初始化有10個元素的vector,然後修改每個元素的值。

#include #include using namespace std;

int main()

for(vector::iterator i=b.begin(); i!=b.end(); i++)

for(string::iterator j=i->begin(); jend(); j++)

*j = toupper(*j);

int count(0);

for(vector::const_iterator iter=b.begin(); iter!=b.end(); iter++)

return 0;

}

#include #include using namespace std;

int main()

參見上題。

用了兩種迭代器:

iterator 如果要修改元素,用這個迭代器

const_iterator 如果僅是遍歷讀取元素,用這個迭代器。

const迭代器沒啥用,一旦定義之後,就不能指向其他元素。

const_iterator迭代器用於唯讀的遍歷元素,其指向的值不能變,但迭代器本身是可以++,--操作的。

兩個迭代器相加沒有意義,這樣會造成未定義的行為。

(a) 64位,值是32的位模式,也就是00100000,這是低8位,其餘補0

(b) 32位,值是1010101的位模式,1010101被當做乙個unsigned long,而不是二進位制數,該輸出是:00000000000011110110100110110101

(c) 從字串獲取的位模式,高低位順序相反。字串的高位是bitset的低位。

#include #include #include using namespace std;

int main()

bitset<32> b;

for(vector::const_iterator iter=a.begin(); iter!=a.end(); iter++)

cout << b << endl;

return 0;

}

c primer大綱(第四版)

第1章 快速入門 第一部分 基本語言 第2章 變數和基本型別 第3章 標準庫型別 第4章 陣列和指標 第5章 表示式 第6章 語句 第7章 函式 第8章 標準io庫 第二部分 容器和演算法 第9章 順序容器 第10章 關聯容器 第11章 泛型演算法 第三部分 類和資料抽象 第12章 類 第13章 複...

C Primer(第四版)答案之第五章

12 3 4 5 15 24 4 2 16 75 0 91 30 3 21 5 90 4 86,不依賴於機器 30 3 21 5 30 12 18,不依賴於機器 30 3 21 5 0,不依賴於機器 30 3 21 4 2,依賴於機器 include using namespace std int ...

c primer 第四版 學習札記 9 24

1 ex4 22 const char cp hello int cnt while cp while cp 解釋兩個迴圈的不同 我的理解是第乙個迴圈是判斷cp指標是否為空作為迴圈條件的,而 cp的操作並不會讓cp為空,所以迴圈會持續進行,直到出錯 也許會是個大錯誤,因為都不知道會訪問到記憶體的何處...