第十七章 17 2 1節練習 17 2 2節練習

2021-06-26 04:01:26 字數 1657 閱讀 6343

練習17.9

解釋下列每個bitset物件所包含的位模式:

(a) bitset<64> bitvec(32);

(b) bitset<32> bv(1010101);

(c) string bstr; cin >> bstr; bitset<8> bv(bstr);

解答:(a) 0x 0000 0000 0010 0000

(b) 0x 000f 69b5

(c) 這個取決於你的輸入。

1010               輸入

00001010      輸出的位模式

0111010111 輸入

01110101      輸出的位模式

11001110      輸入

11001110      輸出的位模式

這個規律也很明顯了,書642頁上也有提示。

練習17.10

使用序列1、2、3、5、8、13、21初始化乙個bitset,將這些位置置位。對另乙個bitset進行預設初始化,並編寫一小段程式將其恰當的位置位。

解答:

#include #include using namespace std;

int main()

這裡序列位從0算起的。

練習17.11

定義乙個資料結構,包含乙個整型物件,記錄乙個包含10個問題的真/假測試的解答。如果測試包含100道題,你需要對資料結構做出什麼改變(如果需要的話)?

解答:10個問題使用size_t就夠用了。但是,當有100道題的時候,單個整數就夠用了,因為2的100次方已經超過了任何內建型別的最大值,這裡可能就要使用兩個整型物件了,乙個儲存1到64題,另乙個儲存65到100題的結果。

class result;

如果不使用整型物件,這樣的問題可以直接用陣列來解決,例如:初始化乙個answer[10]=; answer[100] = 。

不過這裡可以使用bitset+模板來解決這個問題

#include #include using namespace std;

template bitsetinitbit()

int main()

這裡用的是函式,也可以用類的方式來解決。 

不過自定義類,沒有直接使用bitset來得方便。

練習17.12

使用前一題中的資料結構,編寫乙個函式,它接受乙個問題編號和乙個表示真假解答的值,函式根據這兩個引數更新測驗的解答。

解答:和下一題一起解答。

練習17.13

編寫乙個整型物件,包含真假測驗的額正確答案。使用它來為前兩題中的資料結構生成測驗成績。

解答:

#include #include using namespace std;

class result

void test_answer(size_t num, size_t answer)

else

} void checkout()

private:

size_t _1_64, _65_128;

size_t a_1_64, a_65_128;

};int main()

第十七章 17 1 1節練習

練習17.1 定義乙個儲存三個int值的tuple,並將其成員分別初始化為10 20和30。解答 include include int main 練習17.2 定義乙個tuple,儲存乙個string 乙個vector和乙個pair。解答 include include include inclu...

第十七章 17 1 2節練習

練習17.4 編寫並測試你自己版本的findbook函式。解答 實現參考書中實現。練習17.5 重寫findbook,令其返回乙個pair,包含乙個索引和乙個迭代器pair。解答 typedef pair size type,pair const iterator,vector const iter...

第十七章 17 3 1節練習

練習17.14 編寫幾個正規表示式,分別觸發不同錯誤。執行你的程式,觀察編譯器對每個錯誤的輸出。解答 這個就不一一枚舉出來了。如果正規表示式寫錯,在執行時程式會在編譯表示式的時候直接崩潰。練習17.15 編寫程式,使用模式查詢違反 i在e之前,除非在c之後 規則的單詞。你的程式應該提示使用者輸入乙個...