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

下載本文檔

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

文檔簡介

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

試題一是必答題

1.試題一閱讀下列說明、流程圖和算法,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi).[流程圖說明]下面的流程圖用N—S盒圖形式描述了數(shù)組A中的元素被劃分的過程.其劃分方法是:以數(shù)組中的第一個元素作為基準數(shù),將小于基準數(shù)的元素向低下標端移動,而大于基準數(shù)的元素向高下標端移動.當劃分結(jié)束時,基準數(shù)定位于A[i],并且數(shù)組中下標小于i的元素的值均小于基準數(shù),下標大子i的元素的值均大于基準數(shù)。設(shè)數(shù)組A的下界為low,上界為high,數(shù)組中的元素互不相同。例如,對數(shù)組(4,2,8,3,6),以4為基準數(shù)的劃分過程如下:[流程圖][算法說明]將上述劃分的思想進一步用于被劃分出的數(shù)組的兩部分,就可以對整個數(shù)組實現(xiàn)遞增排序。設(shè)函數(shù)intp(intA[],intlow,inthigh)實現(xiàn)了上述流程圖的劃分過程并返回基準數(shù)在數(shù)組A中的下標。遞歸函數(shù)voidsort(intA[],ihtL,intH)的功能是實現(xiàn)數(shù)組A中元素的遞增排序。[算法]voidsort(intA[],ihtl,intH){if(LH){k=p(A,L,R);//p()返回基準數(shù)在數(shù)組A中的下標sort(__(4)__;//小于基準數(shù)的元素排序sortl__(5)__);//大于基準數(shù)的元素排序}}[15分]

從下列的2道試題(試題二至試題三)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。

2.試題二閱讀下列函數(shù)說明和C函數(shù),將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[函數(shù)2.1說明]函數(shù)palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個字符串順讀和倒讀都一樣時,稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。[函數(shù)2.1]intpalindrome(charS[]){char*pi,*pj;pi=S;pj=s+strlen(S)-1:while(pi

3.試題三以下是與VisualBasic開發(fā)應(yīng)用有關(guān)的5個問題.對每一個問題,請將解答填入答題紙的對應(yīng)欄內(nèi)。(1)在VisualBasic中,工程文件、窗體文件和標準模塊文件的擴展名是什么?請從下列選項中選擇:prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm(2)設(shè)某窗體上有一個命令按鈕,其名稱為CmdSave,運行時該按鈕上顯示有“保存(S)”字樣的信息。為使熱鍵ALT+S與該命令按鈕相關(guān)聯(lián),應(yīng)該對按鈕CmdSave的Caption屬性設(shè)置什么樣的屬性值?(3)設(shè)某窗口內(nèi)有一個圖像框Image1,以及兩個命令按鈕“放大”和“縮小”。單擊“放大”按鈕就會使該圖像框的長和寬都放大10%;單擊“縮小”按鈕就會使該圖像框的長和寬都縮小10%(該圖像框的左上角不動)。請分別寫出這兩個命令按鈕的單擊事件過程中的程序代碼。(4)為使某個單選按鈕初始時默認被選中,在開發(fā)時應(yīng)怎樣做?(5)若有語句Tmpval=MsgBox(非法操作!,ybOKCancel+vbCritical,"提示"),請簡要描述程序運行時彈出的消息框的主要特征。[15分]

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

4.試題四閱讀以下說明和C代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[說明]函數(shù)MultibaseOutput(longn,intB)的功能是:將一個無符號十進制整數(shù)n轉(zhuǎn)換成B(2≤B≤16)進制數(shù)并輸出。該函數(shù)先將轉(zhuǎn)換過程中得到的各位數(shù)字入棧,轉(zhuǎn)換結(jié)束后再把B進制數(shù)從棧中輸出。有關(guān)棧操作的諸函數(shù)功能見相應(yīng)函數(shù)中的解釋。C代碼中的符號常量及棧的類型定義如下:#defineKAXSIZE32typedefstruct{int*elem;/*棧的存儲區(qū)*/intmax;/*棧的容量,即找中最多能存放的元素個數(shù)*/inttop;/*棧頂指針*/}Stack;[C代碼]intlnitStack(Stack*S,intn)/*創(chuàng)建容量為n的空棧*/{S-elem=(int*)matloc(n*sizeof(int));if(S-elem==NULL)return-1;S-max=n;__(1)__=0;return0;}intPush(Stack*S,intitem)/*將整數(shù)item壓入棧頂*/{if(S-top==S-max){printf("Stackisfull!\n");return-1;}__(2)__;item;return0;}intStackEmpty(StackS){return(!S.top)?1;0;)/*判斷棧是否為空*/intPop(Stack*S)/*棧頂元素出棧*/{if(!S-top){printf("Popanemptystack!\n");return-1;)return__(3)__;}voidMultibaseOutput(longn,intB){intm;StackS;if(initStack(S,MAXSIZE)){printf("Failure!\n");return;}do{if(Push(s,__(4)__)){printf("Failure!\n");return;}n=__(5)__:}while(n!=0);while(!StackEmpty(S)){/*輸出B進制的數(shù)*/m=Pop(S);if(m10)printf("Kd",m);/*小于10,輸出數(shù)字*/elseprintf("%c,m+55);/*大于或等于10,輸出相應(yīng)的字符*/}printf("\n");}[15分]

5.試題五閱讀以下應(yīng)用說明及VisualBasic程序代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[應(yīng)用說明5.1]本應(yīng)用程序的窗體中有一個下拉式列表框(名稱為Combol)和兩個文本框(名稱分別為Txtl和Txt2)。運行時,用戶從Combol的列表中進行選擇,程序就會將選中條目的內(nèi)容以及編號(從0開始)分別在文本框Txt1和Txt2中顯示出來。[程序代碼5.1]PrivateSubCombol_C1ick()Txtl.Text=Combol.__(1)__Txt2.Text=Combol.__(2)__EndSub(注:可供(2)處選擇的選項:List,Index,Listlndex,ListCount,Number)[應(yīng)用說明5.2]本應(yīng)用程序的運行窗口如下圖所示:當用戶在輸入框(名為Txtln)中輸入數(shù)值數(shù)據(jù),并從下拉式列表框(名為CmbOp)中選擇所需的運算后,輸出框(名為TxtOut)中就會顯示運算的結(jié)果。用戶單擊“清除”按鈕(名為CmdClear)后,輸入框和輸出框都清空。開發(fā)該應(yīng)用的部分程序代碼如下:[程序代碼5.2]PrivateSubCmbOp_Click()DimDataInAsDouble,DataOutasDoubleDataIn=__(3)__SelectCase__(4)__Case"取整數(shù)部分"DataOut=Int(Dataln)Case"求平方根"IfDatalnOThenMsgBox$("負數(shù)不能開平方!")ElseDataOut=Sqr(Dataln)EndIfCase"取絕對值"DataOut=Abs(Dataln)(TxtOut.Text=str$(DataOut)__5)__EndSub[15分]

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

6.試題六閱讀下列函數(shù)說明和C函數(shù),將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[函數(shù)6說明]函數(shù)DelAInsB(LinkedListLa,LinkedListlb,intkey1,intkey2,intlen)的功能是,將線性表A中關(guān)鍵碼為keyl的結(jié)點開始的len個結(jié)點,按原順序移至線性表B中關(guān)鍵碼為key2的結(jié)點之前,若移動成功,則返回0;否則返回-1。線性表的存儲結(jié)構(gòu)為帶頭結(jié)點的單鏈表,La為表A的頭指針,Lb為表B的頭指針。單鏈表結(jié)點的類型定義為:typedefstructnode{intkey;structnode*next;}*Linkedhist;[函數(shù)6]intDelllnsB(LinkedLiStLa,LinkedListLb,intkeyl,intkey2,intlen){LinkedListp,q,S,prep,pres;intk;if(!La-next||!Lb-next||len=0)return-1;p=La-next;prep=La;while(pp-key!=keyl){/*查找表A中鍵值為key1的結(jié)點*/prep=p;p=p-next;}if(!p)return-1;/*表A中不存在鍵值為key1的結(jié)點*/q=p;k=1;while(q__(1)__){/*在表A中找出待刪除的len個結(jié)點*/__(2)__:k++;}if(!q)return-1;/*表A中不存在要被刪除的len個結(jié)點*/?S=Lb-next;__(3)__;while(ss-key!=key2){/*查找表B中鍵值為key2的結(jié)點*/pres=s;s=s-next;}if(!s)return-1;/*表B中不存在鍵值為key2的結(jié)點*/__(4)__q-next;/*將表A中的len個結(jié)點刪除*/q-next:__(5)__pres-next=p;/*將len個結(jié)點移至表B*/return0;}[15分]

7.試題七閱讀以下應(yīng)用說明、屬性設(shè)置及VisualBasic程序代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[應(yīng)用說明7]本應(yīng)用程序的運行窗口如下圖所示:只要用戶單擊“閃爍”按鈕,文字“歡迎光臨”就會以0.3秒消失、0.3秒顯示反復(fù)進行閃爍;單擊“停止”按鈕時,閃爍停止,恢復(fù)圖示的初態(tài)。在開發(fā)過程中,需要設(shè)置的屬性如下:[屬性設(shè)置7]在開發(fā)過程中,需要編寫的程序代碼如下;[程序代碼7]PrivateSubCmdFClick()Timerl.__(3)__=TrueLabel.Visible=FalseEndSubPrivateSubTimerl_Timer()__(4)__=notLabel.VisibleEndSubPrivateSubCmdTClick()Timerl.Enabled=__(5)__Label.Visible=trueEndSub[15分]

從下列的2道試題(試題八至試題九)中任選1道解答,如果解答的試題數(shù)超過1道,則題號小的1道解答有效。

8.試題八閱讀下列程序說明和C程序,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。[程序8說明]程序8用于計算某公司每個職工應(yīng)繳納的個人所得稅額和全體職工繳納的個人所得稅總額。職工的當月收入(工資或薪金)通過鍵盤輸入,每次輸入一個職工的工號和工資(或薪金)。由于該公司的工資或薪金是不定時發(fā)放的,所以輸入過程中每個職工的收入會出現(xiàn)多次輸入,整個輸入以工號小于等于0結(jié)束。假設(shè)個人所得稅法規(guī)定;個人收入所得,按月計稅,以每月收入總額減除免稅金額800元后的余額作為該月的月應(yīng)納稅所得額,適用稅率如下表所示。上表表明,個人收入所得稅是按照超額累進的稅率來征收的。設(shè)一個人的月應(yīng)納稅所得額為K(元),用下面的公式計算其應(yīng)繳納的個人所得稅額S(元):若0#defineMaxNum50#defineBASE800/*免稅金額基數(shù)*/intpaylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,100000¨:inttaxPrate[]={5,10,15,20,25,30,35,40,45):/*稅率表*/typedefstruct{intld;/*職工的工號*/.longSalary;/*職工的工資*/}Info;/*查找工號為Id的職工在數(shù)組employee中的下標,返回值為0表示沒有*/intfind(intld,Infoemployee[],intm){intj;employee[0]._dj=Id;for(j=m;__(1)__;j--);returnj;}voidmain(void){InfoemployeeCHaxNum+1];longWage;doublesums0,K,S:inti,j,N=0,Code;scanf("M%ld",Code,Wage);/*讀入職工號、工資或薪金*/while(Code0){i=find(Code,employee,N);if(i0)employee[i].Salary+=Wage:else{__(2)__;employee[N].Id=Code;employee[N].Salary=Wage;}scanf("%d%ld",Code,Wage):}for(i=1;i=N;i++){K=__(3)__;/*計算月應(yīng)納稅所得額*/S=0;/*月應(yīng)納稅額賦初值*/if(K0){for(j=1;j=9;j++)if(__(4)__)/*月應(yīng)納稅所得額超過第j級*/S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;else{S=S+(__(5)__)*taxPrate[j-1]/100;break;}}printf("職工%d應(yīng)繳納的個人所得稅額:%10.21f\n",employee[i].Id,S);sum+=S;}printf("全體職工個人所得稅總額:%10,21f\n",sum);}[15分]

9.試題九閱讀以下應(yīng)用說明及VisualBasic程序代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi).[應(yīng)用說明9]本應(yīng)用程序的運行窗口如下圖所示:窗口中的三個文本框和兩個按鈕名稱分別為Txt_salary、Txt_base、ht_tax、Cmdcompute和Cmd_quit.運行時,文本框Txt_base中存放的是免稅金額基數(shù)(應(yīng)扣除的基本費用)。當用戶在文本框ht_salary中輸入月收入(工資或薪金)并單擊“計算”按鈕Crud_com

溫馨提示

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

評論

0/150

提交評論