二級C語言機試真題2010年09月_第1頁
二級C語言機試真題2010年09月_第2頁
二級C語言機試真題2010年09月_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、真題二級C語言機試真題2010年09月一、填空題 第 1 題: 請補充 fun 函數(shù),該函數(shù)的功能是:判斷一個年份是否為閏年。 例如, 1900年不是閏年, 2004 是閏年。 注意 部分源程序給出如下。 請勿改動主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的橫線上填入所 編寫的若干表達式或語句。 試題源程序 #include v stdio.h >#include v conio.h >int fun(int n)int fiag=0; if(n%4=0) if( (1) ) fiag=1;if( (2) )flag=1; return (3) ;void mai

2、n()int year;clrscr();printf("Input the year:"); scanf("%d", year);if(fun(year)printf("%d is a leap year.n", year);elseprintf("%d is not a leap year.n", year); 參考答案:(1) n%100 !=0 (2) n%400=0 (3) flag 本題的關(guān)鍵是要知道閏年的定義,如果年份能被 4 整除但不能被 100 整除, 或者能被 400 整除,這兩種情況滿足之一都

3、是閏年。 填空 1:顯然此處屬于第 一種情況,能被4整除但不能被100整除。所以這里應(yīng)該填n%100!=0,只有滿 足這個條件, flag 才能被賦值 1。 填空 2:此處屬于第二種情況,能被 400 整 除,所以應(yīng)該填n%400=0填空3:從程序中可以知道,當(dāng)滿足以上兩種情況 之一時, flag 就被賦值 1 ,顯然 flag 屬于標(biāo)志單元。再看主函數(shù)中對 fun() 函數(shù)的調(diào)用,顯然需要返回的值不是真就是假,即函數(shù) fun() 中標(biāo)志單元 flag 的 內(nèi)容。二、改錯題 第 2 題: 下列給定程序中,函數(shù) fun() 的功能是:將 s 所指字符串中的字母轉(zhuǎn)換為按字 母序列后續(xù)字母(但Z轉(zhuǎn)換

4、為A, z轉(zhuǎn)換為a),其他字符不變。 請改正程序指定部位的錯誤,使它能得到正確結(jié)果。 注意 不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 試題源程序 #inelude v stdio.h >#include v ctype.h > void fun(char *s)foundwhile(*s!= ' )if(*s > = 'A' && *s v = 'Z' |*s> = 'a' && 'sv = 'z')if(*s= ' Z'

5、;)*s= 'A'elseif(*s= z )亠f f*s= a ;else*s+=1;found(*s)+;void main()char s80;printf("n Enter a string with lengthv 80. :nn "); gets(s);printf("n The string:nn t");puts(s);fun(s);printf ("nn The Cords: nn "); puts(s); 參考答案:(1) 錯誤:while(*s!= ' )正確:while(*s)或 whi

6、le(*s!=0)或 while(*s!='O') (2)錯誤:(*s)+; 正確:s+;或-s+;錯誤 1: while 循環(huán)的結(jié)束條件是查找完字符串,即指向字符串結(jié)尾標(biāo)志 0'。由于字符'0 '的ASCAII碼值為0,因而*s指向串尾0 '時,*s的值為0,結(jié) 束循環(huán)。所以 while(*s!= ')應(yīng)改為 while(*s) 或 while(*s!=O) 或 while(*s!= '0 ')。錯誤2: s為字符指針,*s為指針?biāo)傅淖址幚硗曜址械乃?有字符,指針必須向字符串的后面移動,即s+或*s+,而不是

7、字符值增加(*s)+三、編程題第 3 題:學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已存放在主函數(shù)的結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參 n 傳回,平均分通過函數(shù)值返回。 注意 部分源程序給出如下。請勿改動主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在 fun 函數(shù)的花括號中填入 所編寫的若干語句。 試題源程序 #include v stdio.h >#define N 8typedef structchar num10;double s;STREC;double fun(STREC *a, STREC *b

8、, int *n)void main()STREC sN="GA05", 85,"GA03", 76, "GA02", 69, "GA04", 85,"GA01", 91, "GA07", 72, "GA08", 64, "GA06", 87;STREC hN, t; FILE *out;int i, j, n;double ave;ave=fun(s, h, n);printf("The %d student data wh

9、ich is lower than %7.3 f:n", n, ave);for(i=0; i v n; i+)printf("%s %4.1fn", hi. num, hi.s);printf("n"); out=fopen("out.dat", "W");fprintf(out, "%dn%7.3fn", n, ave);for(i=0; 2 v n-1; i+) for(j=i+1; j v n; j+) if(hi. s >hj.s)t=hi;hi=hj;hj=t;for(i=0; 2v n; i+)fprintf(out, "%4.1fn", hi.s);fclose(out);參考答案:int fun(STREC *a, STREC *b, int *n) double ave=0.0; int i, j=0;*n=0; for(i=0; i v N; i+) ave+=ai.s; ave/=N; for(i=0; i v N; i+) if(ai. s v ave) bj=ai; (*n)+; j+; return ave;

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論