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

下載本文檔

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

文檔簡介

1、初級程序員下午試題模擬61試題一 1、【算法說明】 某英漢詞典文件包含N個記錄(N1),每個記錄有兩個字段:一個是英文單詞,另一個是相應(yīng)的漢語解釋。各個記錄按英文單詞的詞典順序排列,各英文單詞并不重復(fù)。 本算法用于維護、更新該英漢詞典文件。維護、更新的方法是:首先輸入一個英文單詞及其漢語解釋,然后在該詞典中查找輸入的英文單詞,若找到,則用輸入的漢語解釋更新原有的解釋;若找不到,則需要將輸入的英文單詞及其漢語解釋插入到該詞典的適當(dāng)位置,使各記錄仍按英文單詞的詞典順序排列。 【算法】 第一步 讀入英漢詞典文件,并將讀入的N個英文單詞依次存放在字符串?dāng)?shù)組ENG中,將相應(yīng)的漢語解釋依次存放在字符串?dāng)?shù)組

2、CN中。數(shù)組元素CN(i)給出了數(shù)組元素ENG(i)的解釋。 第二步 輸入英文單詞及其漢語解釋,將它們分別存放在字符串變量E和C中。若E為空串或都是空格,則轉(zhuǎn)向第四步。 第三步 根據(jù)變量E的值,用二分法在數(shù)組ENG中查找。具體步驟如下: 11L,NH2INT(L+H)/2)K3. 若E=ENG(K),則CCN(K),轉(zhuǎn)向第二步 若EENG(K),則K-1 (1) ;若EENG(K),則K+1 (2)4. 若HL則 對I=N,L,-1(始值,終值,增量)循環(huán)執(zhí)行: ENG(I)ENG(I+1) CN(I)CN(I+1)然后,將E和C分別存入 (3) 和 (4) ,N+1N最后轉(zhuǎn)向第二步否則,轉(zhuǎn)向

3、 (5)第四步 將數(shù)組ENG和CN輸出,形成新的英漢詞典文件,算法結(jié)束。 試題二 說明函數(shù)void convert(char *a,int n)是用遞歸方法將一個正整數(shù)n按逆序存放到一個字符數(shù)組a中,例如n=123,在a中的存放為3、2、1。 函數(shù)2.1void convert(char *a,int n)int i;if(i=n/10)! =0)convert( 2 ,i);*a= 3 ;函數(shù)2.2說明函數(shù)int index(char *s,char *t)檢查字符串s中是否包含字符串t,若包含,則返回t在s中的開始位置(下標值),否則返回-1。 函數(shù)2.2int index(char *s

4、, char *t)inti,j=0;k=0; for(i=0; si!=0;i+) for( 4 ;(tk!=0)(sj!=0) ( 5 );j+,k+); if( 6 )return(i);return(-1);試題三 7、【說明】 函數(shù)diff的功能是:根據(jù)兩個由整數(shù)(都大于-32768)按升序構(gòu)成的單鏈表L1和L2(分別由A, B指向)構(gòu)造一個單鏈表L3(由*r指向),要求13中的所有整數(shù)都是L1,并且不是 L2中的整數(shù),還要求L3中的所有整數(shù)都兩兩不等。 【函數(shù)】 #include malloc. h typedef struct node int d;struct node * n

5、ext Node;void diff(Node *A,Node * B,Node * * r)int lastnum;Node * p;*r = NULL;if( !A. return;while( (1) )if(A-d B -d)lastnum =A - d;p= ( Node * ) malloc( sizeof(Node) ); p-d = lastnum;p-next= *r; (2) ; doA = A - next; while( (3) );else if(A-d B-d) B=B- next;else (4) ;lastnum=A - d;while ( A & A-d =

6、= lastnum) A=A- next;whileA.lastnum=A-d;p=( Node * ) malloc( sizeof(Node) ); p- d = lastnum; (5) ;*r=p;while (A & A-d = = lastnum) A=A-next;試題四 8、【說明】 從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組XX中;請編寫程序,其功能是:以行為單位把字符串中所有小寫字母。左邊的字符串內(nèi)容移到該串的右邊存放,然后把小寫字母。刪除,余下的字符串內(nèi)容移到已處理字符串的左邊存放。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組XX 中, 最后調(diào)用函數(shù)WRITED

7、AT(),把結(jié)果XX輸出到文件 OUT5.DAT中。 例如:原文:You can create an index on any field. you have the correct record.結(jié)果:n any field. Yu can create an index rd. yu have the crreet res原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。 【函數(shù)】 #include stdio.h #include string.h #include conio.h #include ctype.h #includemem.h unsigned ch

8、ar xx50 80 int maxline=0;int readdat(void); void writedat(void)*將題目要求的字符串中所有小寫字母o左邊的字符串內(nèi)容移到誼串的右邊存放,即將串中 “最后”一個字母o左右兩側(cè)的內(nèi)容互換* void StrOR(void)inti;char*p1,* p2,t80; for(i=0;imaxline;i+)t0=/0;p2=xxi;while(*p2)/*找到最后一個別o*/if( (1) )p1=p2; p2+;strcat(t,p1+1);*p1=0; strcat(t,xxi); p1=xxi;p2=t;while(*p2)/*刪

9、去字符o*/if( (2) ) (3) =*p2; p2+; (4) ;void main()clrscr();if(readdat()printf(Cant open the file IN. DAT!n); return; StrOR();writedat();int readdat(void)FILE * fp; int i=0; char * p;if(fp=fopen(in.dat,r )=NULL) return 1;while(fgets(xxi,80, fp)!=NULL)p=strchr(xxi,n); if(p)*p=0; i+;maxline: (5) ; fclose(

10、fp); return 0;void writedat (void)FILE * fp; int i;fp=fopen(in.dat,w); for(i=0;imaxline;i+)printf(%sn,xxi);fprintf(fp, %sn,xxi);fclose(fp);試題五 9、Vsual Basic 程序代碼Private Sub CmdSelect_Cliek() For i = O To List2.ListCount - 1If Listl.Text = List2.List(i) Then Exit Sub不要重復(fù)選擇Next iList2.Addltem (1) 在Lis

11、t2中增添List1中所選的項 End SubPrivate Sub CrndSelAll_Click()List2.Clear先刪除List2中的 已有項 For i = 0 To(2)對List1中所有各項做循環(huán)處理 List2.Addltem(3)將該項增添到 List2中 Next i End SubPrivate Sub CmdDelete_Cliek()If List2.Listlndex = O Then如果List2中有選 中的項,List2.Removeltem(4)則刪除所選的項 End If End SubPrivate Sub CmdDelAll_Cliek() (5)

12、End Sub答案:試題一 1、(1)H(2)L(3)ENG(L)或等價表達式 (4)CN(L)或等價表達式 (5)(2)解析 H,L分別是二分法查找的上界和下界,所以(1)和(2)應(yīng)分別填入H,L。(3)和(4)處是將L 之后的元素依次后移以后,將E和C分別存入L處,所以(3)和(4)處應(yīng)分別填入ENG(L)和CN(L)或其他等價表達式,比如ENG(H+1)。(5)處是HL,這說明查找表未空,需要轉(zhuǎn)向(2)繼續(xù)查找。 試題二 2、a+13、n%10+04、j=i,k=05、tk=sj6、tk=0或!tk解析 函數(shù)1采用遞歸方法將一個正整數(shù)n按逆序存放到一個字符數(shù)組a中,遞歸調(diào)用為conver

13、t(a+1,i),所以空(1)填a+1。按逆序輸出字符保存在數(shù)組a中為*a_n%10+0,即空(2) 填n%10+0。 函數(shù)2檢查字符串s中是否含有字符串t是在for循環(huán)中實現(xiàn)的???3)應(yīng)填j=i,k=0。如果兩個字符串中含有相同的字符,則字符串s和字符串t都指向下一個字符,循環(huán)繼續(xù),直到字符串t結(jié)束。所以空(4)應(yīng)填tk=sj,空(5)應(yīng)填tk=0或!tk。 試題三 7、(1)A&B(2)*r=p(3)A&A-d=lastnum (4)B=B-next(5)p-next=*r解析 函數(shù)的功能在函數(shù)說明中已經(jīng)講得很清楚了,這里就不再重復(fù)。程序的思路是:從鏈表A取一個元素和鏈表B中第一個元素進

14、行比較,如果鏈表A元素小于鏈表B的元素,則將鏈表A中元素插入到鏈表C中,指針后移,在后移時要 所有相同元素;如果鏈表A元素大于鏈表B的元素,將鏈表B 指針后移;如果鏈表A元素等于鏈表B的元素,鏈表A和鏈表B的指針都向后移,而且要 鏈表A中所有相同元素。當(dāng)鏈表A和鏈表B都沒有結(jié)束時,循環(huán)執(zhí)行上述操作。如果鏈表B已經(jīng)到鏈尾,但鏈表A 沒有結(jié)束,則將鏈表A中的剩余元素加入到鏈表C中,同時也要所有相同元素。 根據(jù)上面的分析,(1)空處需要填寫循環(huán)條件,顯然是鏈表A沒有結(jié)束,而且鏈表B也沒有結(jié)束, 即“A!=NULL&B!=NULL”或其等價形式。 (2) 空所在的語句塊是處理鏈表A元素小于鏈表B的元素

15、的情況,需要將鏈表A中元素插入到鏈表C中,在它的前一條語句已經(jīng)把這個結(jié)點后繼指針指向鏈表C的第一個結(jié)點,這里需要將鏈表C的第一個結(jié)點設(shè)置成該結(jié)點,即“*r=p”。 (3) 空處所在dowhile循環(huán)的目的是所有相同元素,需要寫出這個循環(huán)的條件,顯然是當(dāng)一個結(jié)點的值不等于剛剛插入的結(jié)點的值或鏈表A已經(jīng)到了鏈尾時就要退出循環(huán)。因此(3)空處應(yīng)填寫“A! =NULL&A-d=lastnum”及其等價形式。 (4) 空所在語句塊是處理鏈表A元素等于鏈表B元素的情況,鏈表A和鏈表B的指針都向后移,而 且要鏈表A中所有相同元素。鏈表A的指針向后移已經(jīng)寫出,因此,(4)空應(yīng)填寫“B=B-next”。 (5)

16、 空所在while循環(huán)是處理鏈表B已經(jīng)到鏈尾,但鏈表A沒有結(jié)束的情況。這時需要將鏈表A中的剩余元素加入到鏈表C中,插入的方法和(2)空處所在語句塊插入方法一致。(5)空需將要插入結(jié) 點的指針域指向鏈表C的頭指針*r,因此(5)空處應(yīng)填寫“p-next=*r”。 試題四 8、(1) *p2=o(2) *p2!=o(3) *p1+(4) *p1=02 (5) i解析 在主函數(shù)中,首先調(diào)用函數(shù)READDAT(),從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組XX中,用變量maxline表示文章的行數(shù),所以(5)空應(yīng)填入“i”。 函數(shù)STROR()的功能是將字符串中所有小寫字母。左邊的字符串內(nèi)容

17、移到該串的右邊存放,即先將串中“最后”一個字母。左右兩側(cè)的內(nèi)容互換,再刪去所有的小寫字母o。第一個while()循環(huán)的作用是讓p1指向最后一個字母o,所以(1)空應(yīng)填入“*p2=o”。第一個stmat()函數(shù)的作用是將p1以后的字符都放到新串t中。第二個 strcat()函數(shù)的作用是將p1以前的字符連接到新串t 的后面(注意:在此之前要讓p1所指的單元成為p1前面字符串的結(jié)束位置*p1=/0)。這時完成左右互換。最后個while()循環(huán)的作用是刪除新串中的所有小寫字母o,采用的刪除方法是不是o 的字母一律留下,否則不留(即相當(dāng)于刪除),所以(2)空應(yīng)填入“*p2!=o,而p1指向這一行的開始,

18、且每次賦值后值必須加1,所以(3)空應(yīng)填入“* P1 +”。復(fù)制完所有不是o的字母后還要加一個字符串結(jié)束標記,所以(4)空應(yīng)填入“* p1=0”。 最后通過調(diào)用函數(shù)WRITEDAT()把結(jié)果xx輸出到文件中。 試題五 9、(1)Listl.Text(2) Listl.ListCount-(3) Listl.List(i)(4) List2.Lisfindex(5) List2.Clear解析 本題涉及常用的列表框技術(shù)。列表框常用的屬性如下: ListCount列表框內(nèi)的數(shù)據(jù)項個數(shù)List(o),List(1),. 列表框中從上到下各個數(shù)據(jù)項內(nèi)容Text 列表框中當(dāng)前選中的數(shù)據(jù)項內(nèi)容 Listl

19、ndex列表框中當(dāng)前選中的數(shù)據(jù)項的序號列表框常用的方法如下: AddItem列表框尾部增加一個數(shù)據(jù)項(參數(shù)給出數(shù)據(jù)項內(nèi)容) RemoveItem列表框中刪除指定的數(shù)據(jù)項(參數(shù)給出待刪的數(shù)據(jù)項序號)Clear刪除列表框中的全部數(shù)據(jù)項 本題中有兩個列表框List1和List2,以及四個按鈕。 按鈕“”的功能是將列表框List1中選中的一個數(shù)據(jù)項復(fù)制到列表框List2的尾部。 List1中當(dāng)前所選的數(shù)據(jù)項內(nèi)容是List1.Text。為避免重復(fù),在復(fù)制前,應(yīng)先判斷它是否已經(jīng)位于List2 中。List2中,已有的數(shù)據(jù)項個數(shù)為List2.ListCount。各個數(shù)據(jù)項內(nèi)容為: List2List(O), List2List(1),因此可以用循環(huán)語句來實現(xiàn)這種比較。如果發(fā)現(xiàn)重復(fù),則退出該過程(不再復(fù)制)。將Listl.Text復(fù)制到List2的尾部,可以用如下語句實現(xiàn): List2Addltem Listl,Text因此,(1)處應(yīng)填寫Listl.Text。 如果List1中沒有選中任何數(shù)據(jù)項,則上述復(fù)制語句自動作為空語句執(zhí)行。 注意,如果不修改列表框?qū)傩浴癕ultiSelect”的默認值(O)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論