初級程序員下午試題模擬40 doc_第1頁
初級程序員下午試題模擬40 doc_第2頁
初級程序員下午試題模擬40 doc_第3頁
初級程序員下午試題模擬40 doc_第4頁
初級程序員下午試題模擬40 doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、初級程序員下午試題模擬40試題一 1、 閱讀以下說明和流程圖,回答問題將解答填入對應(yīng)欄。說明本流程圖實(shí)現(xiàn)采用遞歸函數(shù)來求一個(gè)整數(shù)數(shù)組中從元素0到元素n中的最小值。該算法思想是這樣的,首先我們假設(shè)有一個(gè)求數(shù)組中最小元素的函數(shù),然后,在求某一具有n的元素的數(shù)組的最小值時(shí),只要求將前n-1的元素的最小值與第n個(gè)元素比較即可。不斷地重復(fù)這一過程,直到數(shù)組中只剩下一個(gè)元素,那么它必定是最小值。 注:int min(int X,int y)為返回兩數(shù)中最小數(shù)的函數(shù)。 int minInArray(int minA為數(shù)組中最小值。 a,intn)為返回?cái)?shù)組中最小數(shù)的函數(shù)。問題l將流程圖的(1)(4)處補(bǔ)充完

2、整。問題2min()函數(shù)的定義為 (5) 。 試題二2、 閱讀以下函數(shù)說明和C語言函數(shù),將應(yīng)填入 (n) 處的字句寫在對應(yīng)欄內(nèi)。說明1函數(shù)int function(int a)的功能是判斷指定的正整數(shù)是否為素?cái)?shù),若是,返回1,否則返回0。 C函數(shù)1int function(int a)int yes,i;i=2;yes=1;while(i=a/2 & (1) if( (2) ) yes=0; i+;return yes;說明2函數(shù)int deleteARR(int*arr,intn)的功能是指定的有序數(shù)組壓縮成各元素互不相同的有序數(shù)組,即相同數(shù)只保留一個(gè),多余的被刪除。函數(shù)返回值是互不相同的元

3、素個(gè)數(shù)。 C函數(shù)2int deleteARR(int*arr,int n)int k,j; k=0;j=1;while(j n) if( (3) ) (4) =arrj; j+;return (5) ;試題三3、 閱讀以下函數(shù)說明和C語言函數(shù),將應(yīng)填入 (n) 處的字句寫在對應(yīng)欄內(nèi)。說明已知一棵二叉樹用二叉鏈表存儲,t指向根結(jié)點(diǎn),p指向樹中任一結(jié)點(diǎn)。下列算法為輸出從t到P 之間路徑上的結(jié)點(diǎn)。 C程序#define Maxsize 1000typedef node data;struct TelemTypestruct node*1child,*rchild;BiNode,*BiTree;voi

4、d Path(BiTree t,BiNode*P) BiTree*stackMaxsize,*stacklMaxsize,*q; int tagMaxsize,top=0,topl;q=t;/*通 過 先 序 遍 歷 發(fā) 現(xiàn) P*/do(while(q!=NULL & q!=p)/*掃描左孩子,且相應(yīng)的結(jié)點(diǎn)不為P*/ (1) ;stacktop=q; tagtop=0; (2) ;if(stacktop=P)break;/*找到P,棧底到棧頂為t到P*/if(tagtop=1)top-; elseq=stacktop; q=q-rchild;tagtop=1; (3) ;top-; topl=

5、0; while(top 0) q=stackto p; topl+; (4) ;top-;while( (5) ) q=stackltopl; printf(q-data); topl-;/*反向打印準(zhǔn)備*/*打印棧的內(nèi)容*/試題四4、 閱讀以下函數(shù)說明和C語言函數(shù),將應(yīng)填入 (n) 處的字句寫在對應(yīng)欄內(nèi)。說明某銀行共發(fā)出M張儲蓄卡,每張儲蓄卡擁有唯一的,每天每張儲蓄卡至多支持儲蓄卡持有者的N筆“存款”或“取款”業(yè)務(wù)。程序中用數(shù)組cardMN+3中的每一行存放一張儲蓄卡的有關(guān)信息, 其中: cardi0存放第i張卡的; cardi1存放第i張卡的余額; cardi2存放第i張卡的當(dāng)日業(yè)務(wù)實(shí)際

6、發(fā)生筆數(shù); cardi3cardiN+2存放第i張卡的當(dāng)日存取款金額,正值代表存款,負(fù)值代表取款。當(dāng)持卡者輸入正確的、存款或取款金額后,程序進(jìn)行相應(yīng)的處理;若輸入不正確的數(shù)據(jù), 程序會提示持卡者重新輸入;若輸入的C 程 序 #includestdio.H #define M 6#define N 5為負(fù)數(shù)時(shí),銀行終止該卡的當(dāng)日業(yè)務(wù)。 long cardMN+3=9801,2000,0,9812,2000,2,9753,3000,1,8750,500,0,9604,2800,3,),(8901,5000,5,;int locate(long cardN+3,int m,long no)int i

7、;for(i=0;im;i+)if( (1) =no)return i; (2) ;main()long cardNo,money; int k;while(1)printf(請輸入:n);scanf(%1d,&cardNo);break;if(cardNo0)k=locate(card,M,cardNo); if(k=-1)printf(不存在%id號的儲蓄卡n,cardNo); continue;printf(請輸入金額(正值代表存款,負(fù)值代表取款):n); scanf(%id,&money);if(cardk1+money0)printf(存款余額不足,不能完成本次的取款業(yè)務(wù)n); co

8、ntinue;if(cardk2=N)printf(已完成本卡的當(dāng)日業(yè)務(wù)n); continue;/*處理一筆業(yè)務(wù)的數(shù)據(jù)*/ cardk (3) =money; (4) ; (5) ;試題五5、 閱讀以下說明和C+代碼,將解答寫入對應(yīng)欄內(nèi)。說明類Stock的定義中有三處錯(cuò)誤,分別在代碼的第04、06、10行。請補(bǔ)齊下述代碼中的空缺(1)(3),修改錯(cuò)誤并給出修改后該行的完整代碼,最后完善程序運(yùn)行后的輸出結(jié)果。 C+程序#includeiostream.h using namespace std; classStock protected:Stock()shares=0; share_val=0

9、.0;Output();Stock(int n=0,double pr=3.5): (1) /初始化shares值為n share_val=pr;Output();voidStock();void Output()(coutshares;share valendl; public:/成員函數(shù)private:/成員變量int shares;01020304050607080910111213141516171819202122232425double;share_val;void mak a(1);/構(gòu)造三個(gè)Stock對象a,b,CtocStock C;Stock();/其他代碼省略,且代碼無輸

10、出程序運(yùn)行后的輸出結(jié)果為:1:3.5 (2) (3)試題六6、 閱讀以下說明和Java代碼,將解答寫在對應(yīng)欄內(nèi)。說明已知類Stock和類JavaMain都定義在JavaMain.java文件中,類stock的定義中有四處錯(cuò)誤,分別在代碼的第01、02、06、07行。請修改錯(cuò)誤并給出修改后該行的完整代碼,并寫出改正錯(cuò)誤后程序運(yùn)行的輸出結(jié)果。 Java代碼public class Stock static shares=0; Share_val=0.0;private Stock()tgetData(); private Stock(int n,double pr=0)shares=n; shar

11、e val=pr; getData();01020304050607080910111213141516171819202122232425publicvoid getData()System.out.print(shares+:+share_val+);Drivate int shares;/非靜態(tài)變量Drivate double share val;/非靜態(tài)變量publiC class JavaMainpublic static void matringargs) Stock a=new Stock(); Stock b=new Stock(1,67.5);/其他代碼省略,且代碼無輸出 答

12、案:試題一1、 minInArray(a,n);(2) 1;(3) minA=an-1;(4) minA=min(minInArray(a,n-1),an); 解析本題目考查流程圖。 (5) xy?x:y;題目是利用遞歸來求數(shù)組中的最小值,則一定是反復(fù)的調(diào)用一個(gè)求數(shù)組最小值的函數(shù),直到比較數(shù)組中最后只剩下兩個(gè)數(shù),則(1)中填入的應(yīng)是“minlnArray(a,n)”,然后,判斷n的值是否為1,如果是,則說明數(shù)組中只有一個(gè)數(shù),則它一定就是最小值,可以直接輸出,所以(2)應(yīng)填入“1”, (3)應(yīng)填入“minA=an”;如果n的值不是1,則說明要繼續(xù)遞歸,則再次調(diào)用求數(shù)組最小值的函數(shù), 把數(shù)組前n-

13、1項(xiàng)的最小值同第n項(xiàng)做比較,所以(4)填入“minA=min(minInArray(a,n-1), an)”, 由于min()是一個(gè)比較函數(shù),返回兩數(shù)中較小的數(shù),我們可以用三元運(yùn)算符直接定義為x y?x:y。試題二 2、 yes或yes=1或yes !=0(3) arrk!=arrj 解析(2) a/i*i=a或a%i=0或!(a%i)(4) arr+k(5) k+1或+k對于函數(shù)1,增加了一個(gè)判斷的標(biāo)志yes,開始進(jìn)入素?cái)?shù)判別循環(huán)時(shí)置yes=1,則(1)應(yīng)填“yes” 或“yes=1”或“yes !=0”;一旦數(shù)n能被某個(gè)不等于零的真因子整除,退出循環(huán),則(2)應(yīng)填“a/i*i=a”或“a%

14、i=0”或“!(a%i)”。 對于函數(shù)2,用k記錄數(shù)組arr中不同元素的個(gè)數(shù),同時(shí)設(shè)置工作指針j,將arrj與已得到的互不相同元素的最后一個(gè)元素進(jìn)行比較,若不相等,則將其作為已比較的互不相同元素的最后一個(gè)元素,所以(3)填“arrk!=artj”,(4)填“arr+k”。最后返回互不相同的元素個(gè)數(shù)k+1, 即(5)填“k+1”或“+k”。 試題三 (4) stackltop1=q3、 top+(2) q=q-1child(3) while(top0)(5) top10 解析本題本質(zhì)上是對二叉樹的先序遍歷進(jìn)行考核,但不是簡單地進(jìn)行先序遍歷,而是僅遍歷從根結(jié)點(diǎn)到給定的結(jié)點(diǎn)p為止。本題采用非遞歸算法

15、來實(shí)現(xiàn),其主要思想是:初始化棧:根結(jié)點(diǎn)進(jìn)棧, 棧不空則循環(huán)執(zhí)行以下步驟直到發(fā)現(xiàn)結(jié)點(diǎn)p;當(dāng)前結(jié)點(diǎn)不為空且不為P進(jìn)棧;棧頂為p,則結(jié)束, 否則轉(zhuǎn);若右子樹訪問過,則棧頂?shù)挠液⒆訛楫?dāng)前結(jié)點(diǎn),轉(zhuǎn)。 掃描左孩子,當(dāng)相應(yīng)的結(jié)點(diǎn)不為P時(shí)進(jìn)棧,所以(1)填“top+”,(2)填“q=q-1child”。在棧不為空時(shí)則一直在do while循環(huán)中查找,因此(3)填“while(top0)”。在進(jìn)行反向打印準(zhǔn)備時(shí),讀取stacktop的信息放到stackltop中,即(4)填“stackltop1=q”。打印棧中所有內(nèi)容,所以(5)填“top10”。 試題四 4、 cardi0cardk2 解析(2) retur

16、n-1(3) cardk2+3(4) cardk1+=money(5)按照程序的說明,函數(shù)Locate是對用戶輸入的進(jìn)行比較,當(dāng)找到對應(yīng)的,則返回持卡者對應(yīng)的記錄號,否則返回-1。cardi0中存放著第i張卡的,所以(1)填“cardi0”, (2)填“return-1”。當(dāng)找到持卡者的為k時(shí),由于cardk2存放實(shí)際的交易次數(shù),因此這次發(fā)生的交易數(shù)應(yīng)該存放的位置為cardkcardk2+3,即(3)填“cardk2+3”。在交易發(fā)生后,存款額要發(fā)生改變,即(4)填“cardk1+=money”,同時(shí)其交易次數(shù)增1,(5)填“cardk2”。 試題五 5、 shares(n)04代碼行修改結(jié)果

17、:public:06代碼行修改結(jié)果:Stock(int n,double pr=3.5): shares(n) 10代碼行修改結(jié)果:Stock()(2) 0:0(3) 0:0解析本題考查的是用C+程序編程。 根據(jù)程序中的注釋,要求初始化shars的值為n,因此根據(jù)初始化語法應(yīng)為“shares(n)”;第四行定義了構(gòu)造函數(shù)的訪問控制為protected,但構(gòu)造函數(shù)應(yīng)該是公共的,所以第四行應(yīng)該更改為“public”:第六行的構(gòu)造函數(shù)定義了默認(rèn)值,這樣構(gòu)造一個(gè)對象的時(shí)候可以填寫不同參數(shù),但這個(gè)構(gòu)造函數(shù)會和stock()的無參構(gòu)造函數(shù)混淆,所以,不能夠帶有默認(rèn)值,可以將帶有默認(rèn)參數(shù)的構(gòu)造函數(shù)更改為:“Stock(int n,double pr=3.5)”或者“Stock(int n,double pr)”。函數(shù)的析構(gòu)函數(shù)不能夠有任何的返回值,所以第十行應(yīng)為“Stock()”:運(yùn)行程序后,程序的輸出結(jié)果為:1:3.5 0:0 0:0試題六 6、01代碼行修改結(jié)果:class Stock 02代碼行修改結(jié)果:06代碼行修改結(jié)果:public Stock()getData();07代碼行修改結(jié)果:public Stock(int n,double pr)程序運(yùn)行的輸出結(jié)果為:0:0.0 1:67.5

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論