1. 程式人生 > >C++程序設計基礎(3)條件語句和循環語句

C++程序設計基礎(3)條件語句和循環語句

程序員面試 true 短信 har 單引號 turn table tchar strong

註:讀《程序員面試筆記》筆記總結

1.知識點

1.1條件語句

(1)if……;(2)if……else……;(3)if……else if……;(4)switch(){case ():break;case():break;default:}。

關於switch的兩點說明,第一是case後面結束後必須加break,否則將在執行某個case之後的所有case語句都會執行,第二是default可以省略。

1.2循環語句

(1)for(init;condition of continue circular;variables update);(2)while(condition)。

關於while的一點說明:當while(1)時一般在內部會有break來終止程序結束,否則進入死循環。

2.面試題

2.1.不使用break的switch語句

公司年底給員工發一條關於年終獎的短信,獎品根據員工年度績效考評結果而定,具體見下表,請編寫一個函數,輸入為員工年度考評的結果,輸出為短信的內容,短信中需要羅列員工所獲得的所有獎品。

考評結果 年終獎品
優秀 A 美國 或英國十日遊,五千元超市卡,兩千元亞馬遜卡,一個月獎金
良好B 五千元超市卡,兩千元亞馬遜卡,一個月獎金
及格C 兩千元亞馬遜卡,一個月獎金
未達標D 一個月獎金
 1 string getMessage(char mark) {
 2     string message = "";
 3     switch
(mark) { 4 case A://註意此處使用單引號表示字符,雙引號表示字符串 5 message.append("美國或英國十日遊,"); 6 case B: 7 message.append("五千元超市卡,"); 8 case C: 9 message.append("兩千元亞馬遜卡,"); 10 case D: 11 message.append("一個月獎金"); 12 default: 13 break; 14 } 15 return
message; 16 } 17 //註意#include<string>來重載cout,才能夠輸出string類型的數據

2.2.for循環的三要素

寫出下面程序的輸出結果:

 1 bool foo(char c) {
 2     cout << c;
 3     return true;
 4 }
 5 int main(int argc, char *argv[]) {
 6     int i = 0;
 7     for (foo(A); foo(B) && (i++ < 2); foo(C)) {
 8         foo(D);
 9     }
10     getchar();
11     return 0;
12 }

答案:ABDCBDCB

2.3巧打乘法口訣表

編寫一個函數,接受一個整形參數n表示輸出的規模。要求只用一重循環輸出乘法口訣表的全部內容,並且程序中不能使用任何條件語句

 1 void print(int n) {
 2     int row = 1, column = 1;
 3      char flag[] = " \n";//當列數等於行數時為flag[1]換行
 4     while (row<=n)
 5     {
 6         cout << row << " * " << column << " = " << row * column << flag[column / row];
 7         int tem = column % row + 1;//當列數等於行數時,tem跳回1
 8         row = column / row + row;//當列數等於行數時,行數加一
 9         column = tem;
10     }
11 }

C++程序設計基礎(3)條件語句和循環語句