摘要:距離2017年下半年軟考程序員考試還有三個月的時間,為了提高考試通過率,希賽網(wǎng)為大家整理了2010年上半年程序員考試下午真題。供大家學習與參考。
2010年上半年程序員考試下午真題:
● (共15分)
閱讀以下說明和流程圖,將應填入(n)處的字句寫在答題紙的對應欄內(nèi)。
【說明】
下面的流程圖旨在統(tǒng)計指定關鍵詞在某一篇文章中出現(xiàn)的次數(shù)。
設這篇文章由字符A(0),…,A(n-1)依次組成,指定關鍵詞由字符B(0),…,B(m-1)依次組成,其中n>m≥1。注意,關鍵詞的各次出現(xiàn)不允許有交叉重疊。例如,在“aaaa”中只出現(xiàn)兩次“aa”。
該流程圖采用的算法是:在字符串A中,從左到右尋找與字符串B相匹配的并且沒有交叉重疊的所有子串。流程圖中,i 為字符串 A 中當前正在進行比較的動態(tài)子串首字符的下標,j為字符串B的下標,k為指定關鍵詞出現(xiàn)的次數(shù)。
【流程圖】
● (共 15 分)
閱讀以下問題說明、C 程序和函數(shù),將解答填入答題紙的對應欄內(nèi)。
【問題 1】
分析下面的C 程序,指出錯誤代碼(或運行異常代碼)所在的行號。
【C 程序】
【問題 2】
函數(shù)inputArr(int a[], int n)的功能是輸入一組整數(shù)(輸入0或輸入的整數(shù)個數(shù)達到n時結束)存入數(shù)組 a,并返回實際輸入的整數(shù)個數(shù)。函數(shù) inputArr 可以成功編譯。但測試函數(shù)調用inputArr后,發(fā)現(xiàn)運行結果不正確。
請指出錯誤所在的代碼行號,并在不增加和刪除代碼行的情況下進行修改,寫出修改正確后的完整代碼行,使之符合上述設計意圖。
【C 函數(shù)】
● (共15 分)
閱讀以下說明和C 函數(shù),將應填入(n) 處的字句寫在答題紙的對應欄內(nèi)。
【說明】
基于管理的需要,每本正式出版的圖書都有一個 ISBN 號。例如,某圖書的 ISBN號為“978-7-5606-2348-1”。
ISBN 號由 13 位數(shù)字組成:前三位數(shù)字代表該出版物是圖書(前綴號),中間的 9個數(shù)字分為三組,分別表示組號、出版者號和書名號,最后一個數(shù)字是校驗碼。其中,前綴號由國際EAN提供,已經(jīng)采用的前綴號為978和979;組號用以區(qū)別出版者、地區(qū)或者語言區(qū),其長度可為1~5位;出版者號為各出版者的代碼,其長度與出版者的計劃出書量直接相關;書名號代表該出版者該出版物的特定版次;校驗碼采用模10加權的算法計算得出。
校驗碼的計算方法如下:
第一步:前 12 位數(shù)字中的奇數(shù)位數(shù)字用 1 相乘,偶數(shù)位數(shù)字用 3 相乘(位編號從左到右依次為13到2);
第二步:將各乘積相加,求出總和S;
第三步:將總和S 除以10,得出余數(shù)R;
第四步:將10減去余數(shù)R后即為校驗碼V。若相減后的數(shù)值為10,則校驗碼為0。
例如,對于ISBN 號“978-7-5606-2348-1”,其校驗碼為1,計算過程為:
S=9×1+7×3+8×1+7×3+5×1+6×3+0×1+6×3+2×1+3×3+4×1+8×3=139
R = 139 mod 10 = 9
V = 10 – 9 = 1
函數(shù)check(char code[])用來檢查保存在code中的一個ISBN號的校驗碼是否正確,若正確則返回 true,否則返回 false。例如,ISBN 號“978-7-5606-2348-1”在 code 中的存儲布局如表3-1所示(書號的各組成部分之間用“-”分隔):
在函數(shù)check(char code[])中,先將13位ISBN號放在整型數(shù)組元素tarr[0]~tarr[12]中(如表3-2 所示,對應 ISBN 號的位13~位 1),由 tarr[0]~tarr[11]計算出校驗碼放入變量V,再進行判斷。
【C 函數(shù)】
● (共 15 分)
閱讀以下說明和C 程序,將應填入(n)處的字句寫在答題紙的對應欄內(nèi)。
【說明】
某旅游服務應用程序運行時,根據(jù)輸入的兩個城市名查找其間的距離。各城市間的距離如表4-1所示。表格中的第一行和第一列表示城市名,表中的每個元素是一個整數(shù),代表該元素所在行和列對應的城市之間的距離(單位:km)。
在程序中,城市名用一維全局數(shù)組cityTable存儲,城市之間的距離矩陣用二維全局數(shù)組kmTable表示,并用相應的值對這兩個數(shù)組進行初始化。
#define NCities 8/* 城市個數(shù) */
#define TRUE 1
static char * cityTable[NCities] = { /* 城市名按字典序升序排列 */
"Beijing",
...... /* 其他城市名略去 */
"Sanya",
};
static int kmTable[NCities][NCities] = {
{0, 1697, 2695, 937, 1784, 1356, 926, 2543},
{1697, 0,313, 1840,533, 940, 1409, 1505},
...... /* 剩余元素的初始值略去 */
};
程序執(zhí)行時,首先按提示輸入兩個城市名,然后在cityTable中查找與城市名對應的下標,最后用該下標在kmTable中找到這兩個城市之間的距離。
程序中定義的函數(shù)FindCityInSortedArray和GetCity說明如下:
(1)函數(shù) FindCityInSortedArray 的功能是用二分查找法在全局數(shù)組 cityTable 中查找城市名所對應的下標值。
(2)函數(shù)GetCity的功能是讀入城市名,調用函數(shù)FindCityInSortedArray來獲取城市所對應的下標值。如果該城市名不存在,則提示用戶重新輸入。
【C 程序】
● (共15 分)
閱讀以下說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。
【說明】
現(xiàn)需要統(tǒng)計某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工數(shù)。假設企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況。
【C++代碼】
【問題 1】
程序運行時,若輸入的員工工資總和為6000,員工數(shù)為5,則屏幕輸出為:
請輸入當月工資總和與員工數(shù):
6000 5
(5)
【問題 2】
若程序運行時,第一次輸入的員工工資總和為6000,員工數(shù)為0,第二次輸入的員工工資總和為0,員工數(shù)為0,則屏幕輸出為:
請輸入當月工資總和與員工數(shù):
6000 0
(6)
0 0
(7)
● (共 15 分)
閱讀以下說明和Java代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。
【說明】
現(xiàn)需要統(tǒng)計某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工人數(shù)。假設企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況。
【Java 代碼】
【問題 1】
程序運行時,若輸入的員工工資總和為6000,員工數(shù)為5,則屏幕輸出為:
請輸入當月工資總和與員工數(shù):
6000 5
(5)
【問題 2】
若程序運行時,第一次輸入的員工工資總和為6000,員工數(shù)為0,第二次輸入的員工工資總和為0,員工數(shù)為0,則屏幕輸出為:
請輸入當月工資總和與員工數(shù):
6000 0
(6)
0 0
(7)
軟考備考資料免費領取
去領取