合肥工業大學C++期末機試題 …
本學期《程式設計基礎》課程實行上機考核,現將考核有關事項通知如下:
(1)考核時間:本學期最後一次上機時間為機試。
(2)考核內容:C++面向過程部分,主要是演算法設計與實現。考題來自本學期佈置的作業、部分例題及一些補充的題目。
(3)考試形式:機試前進入機房時,每人隨機抽取一道題(同一個班的同學保證不抽到同一題),然後上機程式設計,除錯通過後報告監考人員稽核,稽核通過後將源程式拷貝到監考人員U盤上,然後可以離開機房。源程式檔案明必須是“學號姓名.cpp”,如“2012211532劉天.cpp”。
(4)考試要求:機試時考試規則同課堂考試一致,不允許帶書、紙張等。不能攜帶任何可用計算機處理的軟體或資料(不允許任何私人攜帶的U盤、磁碟或計算器) ,不能攜帶任何型別的通訊工具,包括無線電接收器、行動電話。
(5)考試成績:本次機試成績將在《程式設計基礎》課程成績中佔25%的比重。
(6)其它有關事項由主考教師和監考人員負責處理。
附:考試題集
1. 利用異或運算對輸入的文字進行加密解密輸出,使用者輸入一個文字(字串,設不超過20個字元),然後輸入作為金鑰的字元,程式輸入加密及解密的字串。
2. 編寫一個程式,使用者輸入年份及月份兩個資料,程式輸出該月份的天數。(提示:對2月要考慮是否閏年,閏年年份要麼能被4整除且不能被100整除,要麼能被400整除,除次之外都不是閏年)。
3. 某大橋按不同型號徵收車輛過橋費:自行車免費,摩托車2元,小汽車5元,大客車與貨車8元,貨櫃車12元。編寫一個程式,按車輛的不同型號計算通過該大橋應徵的過橋費。(提示:可以用整數對不同型號的車輛進行編碼)
4. 輸入一位同學的考試成績,若是90~100分,輸出“Excellent”,80~89輸出“Very good”,70~79輸出“Good”,60~69輸出“Pass”,60分以下輸出“No Pass”。
5. 旅行社的訂票量小於10張時,航空公司給予10%的折扣;訂票量大於或等於10張且小於20張時,航空公司給予15%的折扣;訂票量大於或等於20張且小於30張時,航空公司給予30%的折扣;訂票量大於或等於30張時,航空公司給予最高的45%的折扣。程式設計輸入訂票張數及單張機票票價,程式輸出折扣率及應付款額。
6. 使用者輸入一個整數流(輸入1000表示資料輸入結束),如
4 1 13 0 6 -5 1 -1 7 -12 19 0 100
編寫程式統計輸入流中-1、0和+1的個數。
7. 編寫一個程式,求一個自然數中含有多少個2的因子。如,6含1個2的因子,8含3個2的因子,11不含2的因子。(提示,程式應檢查使用者輸入的合法性)。
8. 編寫一個程式解決愛因斯坦臺階問題:有人走以臺階,若以每步走2級則最後剩1級;若每步走3級則最後剩2級;若以每步走4級則最後剩3級;若以每步走5級則最後剩4級;若以每步走6級則最後剩5級;若以每步走7級則最後剛好不剩。問臺階共有幾級?
9. 公雞5元1只,母雞3元1只,小雞1元3只,花了100元錢買100只雞,問公雞、母雞、小雞各多少隻?
10. 程式設計實現解決下述問題的演算法:一位顧客在購物時,如果買4個蘋果剩下4角錢.如果買5個蘋果則缺5角錢,請問,該顧客帶了多少錢?多少錢可以頭一個蘋果?
11. 編寫程式.計算100之內可以被13整除的自然數之和。
12. 鍵盤輸入m和n(10
13. 編寫程式列印乘法口訣表。
14. 程式設計實現求解最大公約數的歐幾里德演算法,使用者輸入兩個任意正整數,程式輸出他們的最大公約數。演算法如下:
步驟1: 如果p < q,則交換p和q。
步驟2: 令r是p / q 的餘數。
步驟3: 如果r = 0,則令g = q並終止;
否則令p = q, q = r並轉向步驟2
15. 求不超過正整數n的2的最大冪值,如輸入17,程式應輸出4(24=16<17)。
16. 有關專家十分關注珠江漁業資源的問題。目前珠江中大約有8000萬條魚,平均每年以3.5%的速度減少。請編寫一個程式,計算在多少年之後魚的數目下降到目前的一半?多少年後下降到目前的十分之一?(提示注意整數型別的取值範圍)。
17. 程式設計求解一元二次方程ax2+bx+c=0的根。要求:設計完備的測試資料集,考慮a, b, c各種取值對根的影響。
18. 編寫一個程式,輸入全班同學某門課考試成績,計算平均成績並找出其中最高分與最低分。(提示:批量資料通常不事先規定輸入的資料數量,而是以一個特殊的標誌作為輸入結束。程式根據結束標誌統計人數)
19. 編一程式模擬整數加、減、乘、除四則運算。當你在鍵盤上輸入
5+6
後,程式將輸出=11,當你在鍵盤上輸入11*7後,程式將輸出=77。
20. 把一張1元鈔票換成1分、2分和5分的硬幣,每種至少有1枚,問有多少種換法?
21.
求自然對數底(e)的近似值。e的近似值計算公式為:
當餘項rn<ε時停止計算。設ε=1e-8
22. S= =1!+2!+…+7!
23. S=1×2+3×4+5×6+…+39×40
24. Y=X- + - +…+(-1)n+1 +…的值,精確到10-6。
25. 編制一個程式,讀入一個正整數,並反向輸出。例如,讀入123,輸出是321。
26. 水仙花數問題:水仙花數是一種三位數,它的值等於每個數字的立方和。例如,153=13+53+33。程式設計輸出小於999的水仙花數。
27. 求一整數的等差數列,該數列滿足下述條件:頭4項數的和值為26,積值為880。(提示:該數列公差為正整數,否則數列將出現負數;該數列的首項必須小於5,且其公差也小於5,否則頭四項數的和將大於26。)
28. 完數問題:若有一數,其值等於它的因子之和,則該數稱為完數。例如,6的因子為1、2、3,而6=1+2+3,故6是完數。程式設計輸出1000之內的所有完數及其因子。
29. 100匹馬馱100擔貨,大馬一匹馱3擔,中馬一匹馱2擔,小馬2匹馱1擔。試程式設計計算大、中、小馬的數目。
30. 程式設計產生出1到10以內的所有數對並輸出,其中i>j。
31. 程式設計求出1000以內的所有符合如下條件的數:其高位數字小於低位數字。如12,238等。但21,548不符合條件。
32. 求任一整數N的標準分解式,即素數因子之積。例如16=2*2*2*2, 15=3*5。
33. 斐波那契(Fibonacci)數列問題:Fibonacci數列遞迴定義為:
x0=0,
x1=1,
xi+1=xi+xi-1, i=2,3,…
即從第二項開始,數列中的每一個元素等於前面兩個元素之和。程式設計輸出前20項Fibonacci數。(提示可以用遞迴或迭代兩種方式程式設計)
34. 列印下面圖形。
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
… … … … … … …
1 3 … … 21 … … … 3 1
35. 列印如下圖形
A B C D E
B C D E A
C D E A B
D E A B C
E A B C D
36. 正讀和反讀都一樣的數稱為迴文數。編寫程式輸入一個整數max_num,輸出從0到max_num中用二進位制表示和十進位制表示都是迴文數的整數。定義一個函式is_circle_num()判斷一個數(number)在某個進位制(radius)下是否為迴文數。例如,整數313就是該程式輸出的一個數,因為它的二進位制表示為10011001。
37. 編寫一個遞迴函式:將一個整數轉換為響應的字串並輸出,函式原型可宣告為:void int2str(int number)。
38. 用函式實現將一個以字串形式表示的十六進位制數轉換為一個十進位制整數。例如,輸入”A2”轉換為162。
39. 編寫一個將十進位制整數轉換為十六進位制字串的函式。
40. 編寫出判斷一個整數是否為素數的函式,並求出在2000以內的有十個以上的所有連續的非素陣列。
41. 編制一個程式,統計從標準輸入裝置上輸入的字元流(以?結束)中每個英文字母(大小寫不分開計)出現的次數。
42. 程式設計實現“氣泡排序演算法”,將輸入的若干整數由小到大(升序)排序輸出。要求定義一個排序函式,其原型是void bubble(int data[], int length)。
43. 給定含有m+n個元素的整型陣列A(其中m>0, n>0),它分為兩個互不重疊的,長度分別為m和n的子陣列段,寫出交換這兩個子陣列段的程式,要求不引入陣列A以外的陣列,但可引入若干中間變數。
44. 用陣列儲存資料,實現篩選法求素數問題的求解。要求求出2到1000之間的所有素數。
篩選法求出2~N間的所有素數的方法是:首先將這些數全部放入一個數組中,然後重複下面的操作直到陣列為空為止:
a.找出其中的最小數K,則K一定是一個素數,因此可輸出。
b.從陣列中刪除K及其所有倍數。
45. 程式設計實現二分查詢演算法。二分(折半)查詢(搜尋)演算法如下:
陣列 a 中的 n 個數從大到小(降序)的順序排列,要檢索一個數 x 是否在 a 中,折半查詢演算法的思路是:
設查詢區間為[lower, upper],初值lower=0, upper=n-1; 演算法步驟:
(1)輸入陣列 a 的元素及 x;
(2)x 是否為 a 的第一或最後一個元素。若是其中之一,演算法結束;
46. 程式設計實現查詢矩陣中最大元素的位置。要求輸入一個矩陣中所有元素,輸出該矩陣,並輸出矩陣中最大數所在的行、列號及該元素的值。
47. 編寫程式找出二維整形陣列中所有這樣的元素及其位置:它在所在的行上是最大的,在所在的列上也是最大的。設陣列中的元素各不相同。(提示:先在第i行中尋找此行最大值元素,記下其行和列,然後在其所在的列判斷它是否也是最大的,若是則輸出結果。可以引入標誌變量表示找到這個元素。)
48. 程式設計產生下列陣列,並輸出。
1 2 3 4 5 6
2 3 4 5 6 0
3 4 5 6 0 1
4 5 6 0 1 2
5 6 0 1 2 3
6 0 1 2 3 4
49. 程式設計產生下列陣列,並輸出
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1
50. 程式設計產生下列陣列,並輸出。
1 2 3 .....n-1 0
2 3 4 ..... 0 1
3 4 5 ..... 1 2
................
n-1 0 1 .....n-3 n-2
0 1 2 .....n-2 n-1