2010年上半年程序員考試下午真題

程序員 責(zé)任編輯:YLM 2017-08-16

添加老師微信

備考咨詢

加我微信

摘要:距離2017年下半年軟考程序員考試還有三個(gè)月的時(shí)間,為了提高考試通過率,希賽網(wǎng)為大家整理了2010年上半年程序員考試下午真題。供大家學(xué)習(xí)與參考。

2010年上半年程序員考試下午真題:

>>>點(diǎn)擊進(jìn)入軟考初級程序員歷年真題下載

● (共15分)

閱讀以下說明和流程圖,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
下面的流程圖旨在統(tǒng)計(jì)指定關(guān)鍵詞在某一篇文章中出現(xiàn)的次數(shù)。
設(shè)這篇文章由字符A(0),…,A(n-1)依次組成,指定關(guān)鍵詞由字符B(0),…,B(m-1)依次組成,其中n>m≥1。注意,關(guān)鍵詞的各次出現(xiàn)不允許有交叉重疊。例如,在“aaaa”中只出現(xiàn)兩次“aa”。
該流程圖采用的算法是:在字符串A中,從左到右尋找與字符串B相匹配的并且沒有交叉重疊的所有子串。流程圖中,i 為字符串 A 中當(dāng)前正在進(jìn)行比較的動態(tài)子串首字符的下標(biāo),j為字符串B的下標(biāo),k為指定關(guān)鍵詞出現(xiàn)的次數(shù)。
【流程圖】

1.png

● (共 15 分)
閱讀以下問題說明、C 程序和函數(shù),將解答填入答題紙的對應(yīng)欄內(nèi)。
【問題 1】

分析下面的C 程序,指出錯(cuò)誤代碼(或運(yùn)行異常代碼)所在的行號。

【C 程序】

2.png

【問題 2】

函數(shù)inputArr(int a[], int n)的功能是輸入一組整數(shù)(輸入0或輸入的整數(shù)個(gè)數(shù)達(dá)到n時(shí)結(jié)束)存入數(shù)組 a,并返回實(shí)際輸入的整數(shù)個(gè)數(shù)。函數(shù) inputArr 可以成功編譯。但測試函數(shù)調(diào)用inputArr后,發(fā)現(xiàn)運(yùn)行結(jié)果不正確。

請指出錯(cuò)誤所在的代碼行號,并在不增加和刪除代碼行的情況下進(jìn)行修改,寫出修改正確后的完整代碼行,使之符合上述設(shè)計(jì)意圖。

【C 函數(shù)】

3.png

(共15 分)
閱讀以下說明和C 函數(shù),將應(yīng)填入(n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
基于管理的需要,每本正式出版的圖書都有一個(gè) ISBN 號。例如,某圖書的 ISBN號為“978-7-5606-2348-1”。
ISBN 號由 13 位數(shù)字組成:前三位數(shù)字代表該出版物是圖書(前綴號),中間的 9個(gè)數(shù)字分為三組,分別表示組號、出版者號和書名號,最后一個(gè)數(shù)字是校驗(yàn)碼。其中,前綴號由國際EAN提供,已經(jīng)采用的前綴號為978和979;組號用以區(qū)別出版者、地區(qū)或者語言區(qū),其長度可為1~5位;出版者號為各出版者的代碼,其長度與出版者的計(jì)劃出書量直接相關(guān);書名號代表該出版者該出版物的特定版次;校驗(yàn)碼采用模10加權(quán)的算法計(jì)算得出。
校驗(yàn)碼的計(jì)算方法如下:
第一步:前 12 位數(shù)字中的奇數(shù)位數(shù)字用 1 相乘,偶數(shù)位數(shù)字用 3 相乘(位編號從左到右依次為13到2);
第二步:將各乘積相加,求出總和S;
第三步:將總和S 除以10,得出余數(shù)R;
第四步:將10減去余數(shù)R后即為校驗(yàn)碼V。若相減后的數(shù)值為10,則校驗(yàn)碼為0。
例如,對于ISBN 號“978-7-5606-2348-1”,其校驗(yàn)碼為1,計(jì)算過程為:
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中的一個(gè)ISBN號的校驗(yàn)碼是否正確,若正確則返回 true,否則返回 false。例如,ISBN 號“978-7-5606-2348-1”在 code 中的存儲布局如表3-1所示(書號的各組成部分之間用“-”分隔):

4.png在函數(shù)check(char code[])中,先將13位ISBN號放在整型數(shù)組元素tarr[0]~tarr[12]中(如表3-2 所示,對應(yīng) ISBN 號的位13~位 1),由 tarr[0]~tarr[11]計(jì)算出校驗(yàn)碼放入變量V,再進(jìn)行判斷。

5.png【C 函數(shù)】

6.png

● (共 15 分)
閱讀以下說明和C 程序,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某旅游服務(wù)應(yīng)用程序運(yùn)行時(shí),根據(jù)輸入的兩個(gè)城市名查找其間的距離。各城市間的距離如表4-1所示。表格中的第一行和第一列表示城市名,表中的每個(gè)元素是一個(gè)整數(shù),代表該元素所在行和列對應(yīng)的城市之間的距離(單位:km)。

7.png

在程序中,城市名用一維全局?jǐn)?shù)組cityTable存儲,城市之間的距離矩陣用二維全局?jǐn)?shù)組kmTable表示,并用相應(yīng)的值對這兩個(gè)數(shù)組進(jìn)行初始化。
#define NCities 8/* 城市個(gè)數(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í)行時(shí),首先按提示輸入兩個(gè)城市名,然后在cityTable中查找與城市名對應(yīng)的下標(biāo),最后用該下標(biāo)在kmTable中找到這兩個(gè)城市之間的距離。
程序中定義的函數(shù)FindCityInSortedArray和GetCity說明如下:
(1)函數(shù) FindCityInSortedArray 的功能是用二分查找法在全局?jǐn)?shù)組 cityTable 中查找城市名所對應(yīng)的下標(biāo)值。
(2)函數(shù)GetCity的功能是讀入城市名,調(diào)用函數(shù)FindCityInSortedArray來獲取城市所對應(yīng)的下標(biāo)值。如果該城市名不存在,則提示用戶重新輸入。
【C 程序】

8.png

● (共15 分)
閱讀以下說明和C++代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
現(xiàn)需要統(tǒng)計(jì)某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工數(shù)。假設(shè)企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計(jì)算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況。
【C++代碼】
9.png

【問題 1】

程序運(yùn)行時(shí),若輸入的員工工資總和為6000,員工數(shù)為5,則屏幕輸出為:

請輸入當(dāng)月工資總和與員工數(shù):

6000 5

(5)

【問題 2】

若程序運(yùn)行時(shí),第一次輸入的員工工資總和為6000,員工數(shù)為0,第二次輸入的員工工資總和為0,員工數(shù)為0,則屏幕輸出為:

請輸入當(dāng)月工資總和與員工數(shù):

6000 0

(6)

0 0

(7)

● (共 15 分)
閱讀以下說明和Java代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
現(xiàn)需要統(tǒng)計(jì)某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工人數(shù)。假設(shè)企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計(jì)算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況。
【Java 代碼】
10.png
【問題 1】

程序運(yùn)行時(shí),若輸入的員工工資總和為6000,員工數(shù)為5,則屏幕輸出為:

請輸入當(dāng)月工資總和與員工數(shù):

6000 5

(5)

【問題 2】

若程序運(yùn)行時(shí),第一次輸入的員工工資總和為6000,員工數(shù)為0,第二次輸入的員工工資總和為0,員工數(shù)為0,則屏幕輸出為:

請輸入當(dāng)月工資總和與員工數(shù):

6000 0

(6)

0 0

(7)

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢在線老師!