1. 程式人生 > >結構體的處理(以c++primer plus 第六章習題4為例)

結構體的處理(以c++primer plus 第六章習題4為例)

類型 數據 frame bsp 傳遞 sign 習題 bre xxxxxxxx

 1 const unsigned int strsize = 50;
 2 struct bop     //結構體就像一個數據類型如int  使用前應該先給他一個變量如本題中的bop
 3 {
 4     char fullname[strsize];     // real name
 5     char title[strsize];        // job title
 6     char bopname[strsize];      // secret BOP name
 7     int preference;             // 0 = fullname, 1 = title, 2 = bopname
8 }; 9 void display_by_name(const struct bop *bopArray, unsigned int size) //const 最小授權 結構體不會被改變 boparray還是一個數組 數組在傳遞的時候 一般用地址傳遞 就是指針傳遞 傳遞數組時要帶上它的數組規模 10 { 11 for (size_t i = 0; i < size; i++) 12 { 13 cout << bopArray[i].fullname << endl; //調用結構體中成員的方式
14 } 15 } 16 void display_by_title(const struct bop *bopArray, unsigned int size) 17 { 18 for (size_t i = 0; i < size; i++) 19 { 20 cout << bopArray[i].title << endl; 21 } 22 } 23 void display_by_bopname(const struct bop *bopArray, unsigned int size) 24 { 25 for
(size_t i = 0; i < size; i++) 26 { 27 cout << bopArray[i].bopname << endl; 28 } 29 } 30 void display_by_preference(const struct bop *bopArray, unsigned int size) 31 { 32 for (size_t i = 0; i < size; i++) 33 { 34 if (bopArray[i].preference == 0) 35 { 36 cout << bopArray[i].fullname << endl; 37 } 38 else if (bopArray[i].preference == 1) 39 { 40 cout << bopArray[i].title << endl; 41 } 42 else if (bopArray[i].preference == 2) 43 { 44 cout << bopArray[i].bopname << endl; 45 } 46 } 47 } 48 void p6_4(void) 49 { 50 const struct bop bopArray[5] = { //給結構體變量初始化的方式 51 {"Wimp Macho", "YYY", "Y----", 0}, 52 {"XXXXXXXX", "2XXXX", "3XXXXX", 1}, 53 {"AAAAAAAA", "2AAAA", "3AAAAA", 2}, 54 {"BBBBBBBB", "2BBBB", "3BBBBB", 0}, 55 {"CCCCCCCC", "4CCCC", "3CCCCC", 1} 56 }; 57 char choice = 0; 58 59 cout << "Benevolent Order of Proframers Report" << endl; 60 cout << left << setw(30) << "a. display by name" << "b. display by title" << endl; 61 cout << left << setw(30) << "c. display by bopname" << "d. display by preference" << endl; 62 cout << left << setw(30) << "q. quit" << endl; 63 cout << "Enter your choice:"; 64 65 while (cin >> choice) 66 { 67 if (choice == q) 68 { 69 break; 70 } 71 switch (choice) 72 { 73 case a: 74 display_by_name(bopArray, 5); 75 break; 76 77 case b: 78 display_by_title(bopArray, 5); 79 break; 80 81 case c: 82 display_by_bopname(bopArray, 5); 83 break; 84 85 case d: 86 display_by_preference(bopArray, 5); 87 break; 88 89 default: 90 break; 91 } 92 cout << "Next choice:"; 93 } 94 cout << "Bye!" << endl; 95 return; 96 }

結構體的處理(以c++primer plus 第六章習題4為例)