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