C Primer 第三章 標準庫型別習題解答

2021-07-05 13:20:03 字數 4572 閱讀 4450

3.1

用適當的using宣告,而不是std::字首,訪問標準庫中名字的方法,重新編寫2.3節的程式,計算一給定數的給定次冪的結果。

can not findor open the pdb file.

編譯出現問題

#include"stdafx.h"

#include

#include

usingstd::string;

usingstd::cin;

usingstd::cout;

usingstd::endl;

int_tmain(int argc, _tchar* argv)

if(exponent>0)

cout << base << " raised to the power of" << exponent << ":" << result << endl;

system("pause");

return 0; }

}3.2

什麼是預設建構函式?

答:每個類都定義了該型別物件如何進行初始化。類通過定義乙個或多個建構函式來控制類物件的初始化。如果定義某個類的變數時沒有進行提供初始化式,它會預設執行乙個「預設建構函式」,如果沒有提供初始化式,那麼它就會使用預設建構函式。不管變數在**定義,預設建構函式都會被使用。

3.3列舉出三種初始化string物件的方法。

答:string s1;預設建構函式,s1為空串

strings2(s1);

將s2初始化為s1的乙個副本

strings3(「value」);

將s3初始化為乙個字串字面值副本

3.4s

和s2的值分別是什麼?

strings;

intmain() s

為「 」

s2為 「 」

3.5編寫程式實現從標準輸入每次讀入一行文字。然後改寫程式,每次讀入乙個單詞。 答:

#include"stdafx.h"

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::string;

int_tmain(int argc, _tchar* argv)

//第二問

#include"stdafx.h"

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::string;

int_tmain(int argc, _tchar* argv)

3.6解釋string型別的輸入操作符和getline函式分別如何處理空白字元

string

型別的輸入操作符:

讀取並忽略開頭所有的空白字元(如空格,換行符和製表符)

讀取字元直至再次遇到空白字元,讀取終止。

3.7編寫程式讀入兩個string物件,測試它們是否相等。若不相等,則指出兩個較大,接著,改寫程式測試它們的長度是否相等,若不相等,則指出哪個較長。

// #include"stdafx.h"

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::string;

int_tmain(int argc, _tchar* argv)

\「轉義字元輸出」

3.8編寫乙個程式,從標準輸入讀取多個string物件,把它們連線起來存放到乙個更大的string物件中。並輸出連線後的string物件。

#include

#include

usingnamespace std;

intmain()

system("pause");

return 0; }

3.9

下列程式實現什麼功能?實現合法嗎

?如果不合法,說明理由。

string s

;cout<

答:不合法。

s是乙個空字串,其長度為

0,因此

s[0]

是無效的。

有改進空間

—— 3.10

編乙個程式,從

string

物件中去掉標點符號。要求輸入到程式的字串必須含有標點符號,輸出結果則是去掉標點符號的

string

物件。 //

#include"stdafx.h"

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::string;

int_tmain(int argc, _tchar* argv)

if (has_punct)

cout << "reslut:" <

else

system("pause");

return 0;

} 習題3.13

讀一組整數到

vector

物件,計算並輸出每對相鄰元素的和如果讀入元素個數為奇數,則提示使用者最後乙個元素沒有求和,並輸出其值。然後修改程式:頭尾元素兩兩配對,計算每對元素的和,並輸出。

code:

// #include "stdafx.h"

#include

#include

using std::cin;

using std::cout;

using std::endl;

using std::vector;

using std::string;

int _tmain(int argc, _tchar*argv)

//計算相鄰元素並輸出

if (ivec.size() == 0)

cout << "

在vector

物件中相鄰的每對元素之和

:"<< endl;

for (vector::size_type index = 0; index < ivec.size()- 2; index = index + 2)

if ((ivec.size()-1) % 2 != 0)//

提示輸出最後

1個元素沒有和

cout << endl;

cout << "

它的值是:

" <

system("pause");

return 0;}

//第二問

// #include"stdafx.h"

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::vector;

usingstd::string;

int_tmain(int argc, _tchar* argv)

if (ivec.size() == 0)

cout << "

計算vector物件中首尾元素之和" << endl;

vector::size_type cnt = 0;

for (vector::size_type first = 0,last = ivec.size() - 2; first < last; ++first, --last)

system("pause");

return 0; }

3.14

讀入一段文字到

vector

物件,每個單詞儲存為

vector

中的乙個元素。把

vector

物件中每個單詞轉化為大寫字母。輸出

vector

物件中轉化後的元素,每八個單詞為一行輸出。

#include "stdafx.h"

#include

#include

#include

#include

usingstd::cin;

usingstd::cout;

usingstd::endl;

usingstd::vector;

usingstd::string;

int_tmain(int argc, _tchar* argv)

//將vector物件中小寫字母化為大寫字母,並輸出

if(svec.size() == 0)

for (vector::size_type ix = 0;ix != svec.size()-1; ix++)

cout << svec[ix] << "";

if ((ix+1) % 8 == 0)

cout << endl; }

system("pause");

return 0;}



C primer第三章 標準庫型別

一 標準庫string型別 include 1 string物件的定義和初始化 表3.1幾種初始化string物件的方式 string s1 預設建構函式,s1為空串 string s2 s1 將s2初始化為s1的乙個副本 string s3 value 將s3初始化為乙個字串字面值的副本 stri...

C Primer 第三章 標準庫型別

c 定義了兩種最重要的標準庫型別 string 和 vector,它們分別定義了大小可變的字串和標準庫。其中,string型別支援長度可變的字串,vector可用於儲存一組指定類 型的物件。3.2標準庫string 型別 string型別支援長度可變的字串,使用者程式要使用string型別物件,必須...

《C Primer》 第三章 標準庫型別

除低階資料型別,c 標準庫還定義了許多更高階的抽象資料型別 abstract data type 比如string,vector,bitset。命名空間的using宣告 使用using宣告可以在不需要加字首namespace name 的情況下訪問命名空間中的名字。using namespace n...