2022年上半年程序員下午試卷_第1頁(yè)
2022年上半年程序員下午試卷_第2頁(yè)
2022年上半年程序員下午試卷_第3頁(yè)
2022年上半年程序員下午試卷_第4頁(yè)
2022年上半年程序員下午試卷_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯年上半年程序員下午試卷2022年上半年程序員下午試卷

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

2.試題二(共15分)閱讀以下問(wèn)題說(shuō)明、C程序和函數(shù),將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。【問(wèn)題1】分析下面的C程序,指出錯(cuò)誤代碼(或運(yùn)行異常代碼)所在的行號(hào)?!綜程序】【問(wèn)題2】函數(shù)inputArr(inta[],intn)的功能是輸入一組整數(shù)(輸入0或輸入的整數(shù)個(gè)數(shù)達(dá)到n時(shí)結(jié)束)存入數(shù)組a,并返回實(shí)際輸入的整數(shù)個(gè)數(shù)。函數(shù)inputArr可以成功編譯。但測(cè)試函數(shù)調(diào)用inputArr后,發(fā)現(xiàn)運(yùn)行結(jié)果不正確。請(qǐng)指出錯(cuò)誤所在的代碼行號(hào),并在不增加和刪除代碼行的情況下進(jìn)行修改,寫(xiě)出修改正確后的完整代碼行,使之符合上述設(shè)計(jì)意圖?!綜函數(shù)】[15分]

3.試題三(共15分)閱讀以下說(shuō)明和C函數(shù),將應(yīng)填入(n)處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】基于管理的需要,每本正式出版的圖書(shū)都有一個(gè)ISBN號(hào)。例如,某圖書(shū)的ISBN號(hào)為“978-7-5606-2348-1”。ISBN號(hào)由13位數(shù)字組成:前三位數(shù)字代表該出版物是圖書(shū)(前綴號(hào)),中間的9個(gè)數(shù)字分為三組,分別表示組號(hào)、出版者號(hào)和書(shū)名號(hào),最后一個(gè)數(shù)字是校驗(yàn)碼。其中,前綴號(hào)由國(guó)際EAN提供,已經(jīng)采用的前綴號(hào)為978和979;組號(hào)用以區(qū)別出版者國(guó)家、地區(qū)或者語(yǔ)言區(qū),其長(zhǎng)度可為1~5位;出版者號(hào)為各出版者的代碼,其長(zhǎng)度與出版者的計(jì)劃出書(shū)量直接相關(guān);書(shū)名號(hào)代表該出版者該出版物的特定版次;校驗(yàn)碼采用模10加權(quán)的算法計(jì)算得出。校驗(yàn)碼的計(jì)算方法如下:第一步:前12位數(shù)字中的奇數(shù)位數(shù)字用1相乘,偶數(shù)位數(shù)字用3相乘(位編號(hào)從左到右依次為13到2);第二步:將各乘積相加,求出總和S;第三步:將總和S除以10,得出余數(shù)R;第四步:將10減去余數(shù)R后即為校驗(yàn)碼V。若相減后的數(shù)值為10,則校驗(yàn)碼為0。例如,對(duì)于ISBN號(hào)“978-7-5606-2348-1”,其校驗(yàn)碼為1,計(jì)算過(guò)程為: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=139R=139mod10=9V=10–9=1函數(shù)check(charcode[])用來(lái)檢查保存在code中的一個(gè)ISBN號(hào)的校驗(yàn)碼是否正確,若正確則返回true,否則返回false。例如,ISBN號(hào)“978-7-5606-2348-1”在code中的存儲(chǔ)布局如表3-1所示(書(shū)號(hào)的各組成部分之間用“-”分隔):在函數(shù)check(charcode[])中,先將13位ISBN號(hào)放在整型數(shù)組元素tarr[0]~tarr[12]中(如表3-2所示,對(duì)應(yīng)ISBN號(hào)的位13~位1),由tarr[0]~tarr[11]計(jì)算出校驗(yàn)碼放入變量V,再進(jìn)行判斷?!綜函數(shù)】boolcheck(charcode[]){inti,k=0;intS=0,temp=0;intV;inttarr[13]={0};if(strlen(code)17)returnfalse;for(i=0;i17;i++)/*將13位ISBN號(hào)存入tarr*/if(code[i]!='-')tarr[(1)]=code[i]-'0';for(i=0;(2);i++){if(i%2)S+=(3);elseS+=(4);}V=((5)==0)?0:10-S%10;if(tarr[12]==V)returntrue;returnfalse;}[15分]

4.試題四(共15分)閱讀以下說(shuō)明和C程序,將應(yīng)填入(n)處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】某旅游服務(wù)應(yīng)用程序運(yùn)行時(shí),根據(jù)輸入的兩個(gè)城市名查找其間的距離。各城市間的距離如表4-1所示。表格中的第一行和第一列表示城市名,表中的每個(gè)元素是一個(gè)整數(shù),代表該元素所在行和列對(duì)應(yīng)的城市之間的距離(單位:km)。在程序中,城市名用一維全局?jǐn)?shù)組cityTable存儲(chǔ),城市之間的距離矩陣用二維全局?jǐn)?shù)組kmTable表示,并用相應(yīng)的值對(duì)這兩個(gè)數(shù)組進(jìn)行初始化。#defineNCities8/*城市個(gè)數(shù)*/#defineTRUE1staticchar*cityTable[NCities]={/*城市名按字典序升序排列*/"Beijing",....../*其他城市名略去*/"Sanya",};staticintkmTable[NCities][NCities]={{0,1697,2695,937,1784,1356,926,2543},{1697,0,313,1840,533,940,1409,1505},....../*剩余元素的初始值略去*/};程序執(zhí)行時(shí),首先按提示輸入兩個(gè)城市名,然后在cityTable中查找與城市名對(duì)應(yīng)的下標(biāo),最后用該下標(biāo)在kmTable中找到這兩個(gè)城市之間的距離。程序中定義的函數(shù)FindCityInSortedArray和GetCity說(shuō)明如下:(1)函數(shù)FindCityInSortedArray的功能是用二分查找法在全局?jǐn)?shù)組cityTable中查找城市名所對(duì)應(yīng)的下標(biāo)值。(2)函數(shù)GetCity的功能是讀入城市名,調(diào)用函數(shù)FindCityInSortedArray來(lái)獲取城市所對(duì)應(yīng)的下標(biāo)值。如果該城市名不存在,則提示用戶(hù)重新輸入?!綜程序】intmain(){intcity1,city2;city1=GetCity("輸入第1個(gè)城市名:");city2=GetCity("輸入第2個(gè)城市名:");printf("%s和%s之間的距離為:%dkm.\n",cityTable[city1],cityTable[city2],kmTable[city1][city2]);return0;}staticintGetCity(char*prompt){char*cityName;intindex;cityName=(char*)malloc(20*sizeof(char));while(TRUE){printf("%s",prompt);gets(cityName);/*獲取輸入字符串*/index=FindCityInSortedArray(cityName);if((1))break;printf("城市名不存在,請(qǐng)重新輸入。\n");}free(cityName);return(2);}staticintFindCityInSortedArray(char*key){intlh,rh,mid,cmp;lh=0;rh=NCities-1;while((3)){mid=(lh+rh)/2;cmp=strcmp((4));/*比較兩個(gè)城市名是否相同*/if(cmp==0)return(5);/*兩個(gè)城市名相同*/if(cmp0){rh=mid-1;}else{lh=mid+1;}}return(-1);/*城市名不存在時(shí)返回-1*/}[15分]

從下列2道試題(試題五至試題六)中任選1道解答。如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解答有效。

5.試題五(共15分)閱讀以下說(shuō)明和C++代碼,將應(yīng)填入(n)處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】現(xiàn)需要統(tǒng)計(jì)某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工數(shù)。假設(shè)企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計(jì)算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況?!綜++代碼】#includeusingnamespacestd;classDepartment{protected:floataverage(floatx,inty){if(y==0)throw(1);returnx/y;}public:voidcaculate(void){floatsumSalary;intemployeeNumber;try{cout"請(qǐng)輸入當(dāng)月工資總和與員工數(shù):"endl;cinsumSalaryemployeeNumber;floatk=average(sumSalary,employeeNumber);cout"平均工資:"kendl;}(2)(inte){if(e==0){cout"請(qǐng)重新輸入當(dāng)月工資總和與員工數(shù):"endl;cinsumSalaryemployeeNumber;floatk=average(sumSalary,employeeNumber);cout"平均工資:"kendl;}}}};voidmain(){try{(3);d.caculate();}(4)(inte){if(e==0)cout"程序未正確計(jì)算平均工資!"endl;}}【問(wèn)題1】程序運(yùn)行時(shí),若輸入的員工工資總和為6000,員工數(shù)為5,則屏幕輸出為:請(qǐng)輸入當(dāng)月工資總和與員工數(shù):60005(5)【問(wèn)題2】若程序運(yùn)行時(shí),第一次輸入的員工工資總和為6000,員工數(shù)為0,第二次輸入的員工工資總和為0,員工數(shù)為0,則屏幕輸出為:請(qǐng)輸入當(dāng)月工資總和與員工數(shù):60000(6)00(7)[15分]

6.試題六(共15分)閱讀以下說(shuō)明和Java代碼,將應(yīng)填入(n)處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】現(xiàn)需要統(tǒng)計(jì)某企業(yè)員工的月平均工資,即該企業(yè)本月發(fā)給員工的工資總和除以員工人數(shù)。假設(shè)企業(yè)本月發(fā)給員工的工資總和為sumSalary,該企業(yè)的員工總數(shù)為employeeNumber,下面的程序代碼計(jì)算該企業(yè)員工本月的平均工資,其中需要處理employNumber為0的情況?!綣ava代碼】importjava.util.Scanner;publicclassJavaMain{staticfloataverage(floatx,inty)throwsException{if(y==0)thrownewException((1));returnx/y;}staticvoidcaculate()throwsException{floatsumSalary;intemployeeNumber;Scannersc=newScanner((2));try{System.out.println("請(qǐng)輸入當(dāng)月工資總和與員工數(shù):");sumSalary=sc.nextFloat();//從標(biāo)準(zhǔn)輸入獲得工資總和employeeNumber=sc.nextInt();//從標(biāo)準(zhǔn)輸入獲得員工數(shù)floatk=average(sumSalary,employeeNumber);System.out.println("平均工資:"+k);}(3)(Exceptione){if(e.getMessage().equalsIgnoreCase("zero")){System.out.println("請(qǐng)重新輸入當(dāng)月工資總和與員工數(shù):");sumSalary=sc.nextFloat();employeeNumber=sc.nextInt();floatk=average(sumSalary,employeeNumber);System.out.println("平均工資:"+k);}}}publicstaticvoidmain(String[]args){try{cacu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論