本帖最后由 snowhorse712 于 2012-4-4 09:13 編輯
滿分20分 學術一,二,三題/ 專業一,二,四題 要求添加足夠多的注釋 一, 精確計算階乘. 一個32 位整型變量無法精確表示大數的階乘, 但一個整型數組卻可表示. 算法思路: 當階乘結果為不超過10的4次方的十進制正整數時, 可用一個整型數組( int nFactorial[4] )來依次存放階乘的每一位數字. 比如, 5!=120可被記錄為nFactorial[0]= 0, nFactorial[1] = 2, nFactorial[2] = 1, nFactorial[3] = 0. 當已計算出k的階乘, 要計算(k+1)的階乘時, 將記錄k的階乘的數組的每一位都與(k+1)相乘, 乘積依然存在數組的對應位上. 最后, 從最低位開始, 依次向高位循環處理每個位中大于9的數. 若數大于9,則需要進位. 將數的10的倍數進到高一位上,將數的小于10的余數存在原來的位中.一直到所有位中的數都小于10為止. (1)(6分) 按此思路, 當已知階乘結果為一個不超過10的1000次方的十進制整數時, 寫出計算正整數階乘的完整C/C++代碼. 輸入: 鍵盤輸入一個正整數 輸出: 顯示輸入正整數的階乘 (2)(2分) 完善代碼, 實現鍵盤輸入是否滿足要求的檢查功能. (3)(2分) 寫出幾種測試用例. 二, 有一個浮點型數組記錄了1000個浮點數(float fData[1000]). (1)(3分) 編寫C/C++代碼, 求出這1000個數中最大的10個數. (2)(3分) 寫出能實現從1000億個數中尋找最大的10個數的算法思路. 三, 已知一個指向單向鏈表的某個非頭非尾節點的指針(node* pCurrent). pCurrent 指向的地址中僅保存2個指針, 一個是指向下一個節點的Next指針(pCurrent-> Next), 另一個是指向節點本身數據的Data指針(pCurrent-> Data). 編寫一個C/C++函數, 實現以下功能: (1)(2分) 保留鏈表的原有順序,在原鏈表中刪除這個已知節點的下一個節點. (2)(2分) 保留鏈表的原有順序,在原鏈表中刪除這個已知節點. 四, 異或運算的應用. (1) (2分) 列舉異或運算的性質. (2) (2分) 已知一個記錄了1000個整數的整數型數組. 將這1000個整數打亂順序后,只將其中的999個整數記錄在另一個數組中.請利用異或運算的性質編寫一個C/C++函數, 找出缺少的那一個整數. |