二級C語言機試-151_第1頁
二級C語言機試-151_第2頁
二級C語言機試-151_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、二級C語言機試-151(總分:100.00,做題時間:90分鐘)一、填空題(總題數:1,分數:30.00)1. 請補充函數fun(),該函數的功能是把數組aa中的偶數元素按原來的先后順序放在原數組后面。例如,輸入“ 33, 67,42,58,25,76,85,16,41, 56”,輸出結果“ 33,67,25,85,41,42,58,76,16, 56”。注意:部分源程序給岀如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。 試題程序:#define N 10void fun (int aa )int i, j=O,k=O;int bb

2、 N;for (i=0;i v N; i+)if (【1】)bb k+ =aa i;elseaa j + =aa i;for(i=0;【2】;i+,j+)aaj =bb i;main ()int i;int aaN=33, 67,42,58,25, 76, 85, 16,41,56;clrscr ();printf(/n* original list */n);for (i=0;i v N; i+)printf (%4d, aa i);fun (aa);printf(/n* new list */n );for (i=0; i v N; i+)printf (%4d, aa i);(分數:30

3、.00 )填空項 1: (正確答案:1aai % 2=0 (2)i v k)解析:解析填空1:如果一個數對2求余,結果為0;則這個數為偶數,就把這個數先暫時存在數組bb中。否則這個數為奇數,就存在數組 aa中。填空2:最后,將數組bb中的偶數都拷貝到數組 aa中奇數的 后面。變量k記錄了原數組aa中偶數的個數,所以for循環的條件是i v k。二、改錯題(總題數:1,分數:30.00)2. 下列給定程序中,函數fun()的功能是:將字符串p中所有字符復制到字符串 b中,要求每復制3個字 符之后插入一個空格。例如,在調用 fun()函數之前給字符串a輸入ABCDEFGHIJK調用函數之后,字符串

4、 b 中的內容則為 ABC DEF GHI JK。請改正程序中的錯誤,使它能得出正確的結果。 注意:不要改動 main 函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include void fun (char *p, char *b)int i, k=0;while (*p)/*f 1*/i=l;*found*while (i 3| *P) bk=*p; k+; p+; i+;if (*p) bk= bk= /0;*found*main ( )char a80,b80;printf (Enter a string: ); gets (a);printf (The original

5、string: ); puts (a);fun (a,b);printf(/nThe string after insert space: ); puts(b); printf(/n/n );(分數: 30.00 )填空項 1: (正確答案:錯誤: i=1 ; 正確: i=0 ;(2) 錯誤:while(i 引|*p) 正確:while(i 3&*p)(3) 錯誤: bk=; 正確: bk+=;)解析: 解析 該題考查字符串復制程序的構造方法,題中插入空格字符的定義條件是while(i 3|*p)當然要同時滿足i 3和*p這兩個條件后才能執行b(k+= ; 這個語句,該語句的含義是在輸出結果

6、中置入空格字符。三、編程題 (總題數: 1,分數: 40.00)3. 請編寫函數fun(),該函數的功能是:將 M行N列的二維數組中的數據,按行的順序依次放到一維數組 中,一維數組中數據的個數存放在形參 n 所指的存儲單元中。例如,若二維數組中的數據為:33 33 33 3344 44 44 4455 55 55 55則一維數組中的內容應該是 33 33 33 33 44 44 44 AA , 55 55 55 55 注意:部分源程序給出如下。請勿改動主函數 main 和其他函數中的任何內容,僅在函數 fun 的花括號中填入所編寫的若干語句 試題程序:#include void fun (in

7、t (正確答案: (void fun (int (*s)10, int *b, int *n, int mm, int nn)int i, j, k=0;for (i=0; i mm; i + ) / * 將二維數組 s 中的數據按行的順序依次放到一維數組 b 中* /for (j=0; j nn; j+)bk+=s i j; /*通過指針返回元素個數 */ n=k)解析:解析 我們可以用兩個循環來處理問題, 由于是按行的順序取出, 所以第 1 個循環用于控制行下標, 第2 個循環用于控制列下標;若改成按列的順序取出,則循環應改成:for(i=0 ;i nn; i+)for(j=0 ;i mm

8、; j+) bk+=sji;要注意 sji 的下標,不能用 sij。若按行取出則列標變化最快,若按列取出則行標變化最快。再根據循環嵌套時,越在內層的循環,其循環 變量變化就越快。 上題程序中只有當 j 從頭到尾變化完時, i 才變化一次 (即加 1) ;由于二數組的第 1個下 標為行下標,第 2 個下標為列下標,所以第 1 個程序列變化最快、第 2 個程序行變化最快。s)10, int *b, int *n,int mm, int nn) main ( )int w10 10=33,33,33,33,44,44, 44,44,55,55,55,55, i, j;int a100=0,n=0 ; printf (The matrix: /n );for (i=0; i3; i+)for (j+0; j4; j+)printf (%3d

溫馨提示

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

最新文檔

評論

0/150

提交評論