2011年1月自考00342高級語言程序設計一試題及答案含解析_第1頁
2011年1月自考00342高級語言程序設計一試題及答案含解析_第2頁
2011年1月自考00342高級語言程序設計一試題及答案含解析_第3頁
2011年1月自考00342高級語言程序設計一試題及答案含解析_第4頁
2011年1月自考00342高級語言程序設計一試題及答案含解析_第5頁
免費預覽已結束,剩余5頁可下載查看

下載本文檔

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

文檔簡介

高級語言程序設計(一)年月真題

0034220111

1、【單選題】下列運算符的操作數(shù)必須是整型的是()

!

A:

%

B:

=

C:

答D:案:C

解析:運算符%的含義是求取兩個整數(shù)相除的余數(shù),要求除數(shù)和被除數(shù)必須是整型。

2、【單選題】可用于C語言用戶標識符的是()

void,define

2c,DO

A:

or,-abc

B:

as_b3,_123

C:

答D:案:D

解析:在C語言中,合法的標識符由字母、數(shù)字和下劃線組成,并且第1個字符必須為字

母或下劃線。選項A中void為C語言中的保留字,不能作為用戶的標識符;選項B中2c

數(shù)字開頭,不能作為用戶的標識符。選項C中For的首字母是大寫的,這和關鍵字for不

同,C語言中大小寫字母是有區(qū)別的,F(xiàn)or可以作為用戶的標識符;但選項C中-abc的-開

頭,不能作為用戶的標識符。選項D的兩個都可以用于C語言用戶標識符。

3、【單選題】函數(shù)調(diào)用語句fun(fun(a,a+b,a+c),(a,b,c),5);中函數(shù)fun的參數(shù)個

數(shù)是()

3

4

A:

5

B:

6

C:

答D:案:A

解析:函數(shù)調(diào)用語句fun(fun(a,a+b,a+c),(a,b,c),5);中函數(shù)fun的參數(shù)個數(shù)有

3個分別是:fun(a,a+b,a+c)、(a,b,c)和5。

4、【單選題】設inta=0,b=1;,下列語句錯誤的是()

a=b=10;

a++;

A:

b+=a;

B:

(a+b)++;

C:

答D:案:D

解析:進行++的必須是變量,不能是表達式。比如a++相當于a=a+1;而(a+b)++相當于

(a+b)=(a+b)+1,顯然是錯誤的,不能把一個值賦給一個表達式。

5、【單選題】能正確表達數(shù)學關系式0≤x<20的C語言表達式是()

0<=x<20

x>=0||x<20

A:

x>=0&&x<20

B:

!(x<=0)&&x<20

C:

答D:案:C

解析:數(shù)學關系式0≤x<20的含義是x大于等于0且x小于20,四個選項中只有選項C能

正確表達該數(shù)學關系式。特別要注意選項A,0<=x<20和數(shù)學關系式0≤x<20含義不同,C

語音表達式0<=x<20該式相當于“(0<=x)<20”。先計算“0<=x”,結果為1或0;再計

算該結果(1或0)<20的值,顯然結果是“1”(真)。

6、【單選題】正確的C語言字符常量是()

‘\\\’

‘65’

A:

“A”

B:

‘/n’

C:

答D:案:A

解析:選項A.‘\\\’是轉(zhuǎn)義字符常量;選項B.‘65’是錯誤表示;選項C.“A”是字符

串常量;選項D.‘/n’是錯誤表示,回車換行用轉(zhuǎn)義字符‘\n’表示。

7、【單選題】設chars[]=“1234567”;,執(zhí)行printf(“%d,%d\n”,strlen(s),

sizeof(s));后的輸出結果是()

7,7

7,8

A:

8,7

B:

8,8

C:

D:

答案:B

解析:函數(shù)strlen(s)的功能是求取s中字符串的長度,字符串“1234567”的長度為7;

函數(shù)sizeof(s)的功能是計算數(shù)組s的長度,定義s數(shù)組時長度省略,實際長度是8,除

了存放1234567為還要存放字符串結束標記’\0’,所以7,8。

8、【單選題】設inta[]={12,34,56,78},*p=a;,下列表達式的值為56的是()

p[1+2]

*(a+2)

A:

a[3]

B:

*(p+3)

C:

答D:案:B

解析:選項A,相當于p[3],即a[3],值為78;選項B,相當于a[2],值為56;選項C

的值顯然是78;選項D,相當于p[3],即a[3],值為78。

9、【單選題】對二維數(shù)組正確定義并初始化的是()

inta[][3]={1,2,3,4,5,6};

inta[3][3]=(1,2,3,4,5,6);

A:

inta[3][]={{l,2,3},{4,5,6}};

B:

inta[3][3]={a,b,c,d,e,f,g};

C:

答D:案:A

解析:選項A正確,對定義二維數(shù)組的同時進行初始化,其第1維可以省略,選項A中省

略的第1維的長度為2。選項B錯誤,初始化數(shù)組用“{}”而不是“()”。選項C錯

誤,不論什么情況,定義二維數(shù)組時也不能省略第2維的長度。選項D錯誤,定義a是整

型數(shù)組,初始化的不是整數(shù)。

10、【單選題】設doublex=5.168;,執(zhí)行printf(“%5.3f\n”,(int)(x*10+0.5)/

10.0);后的輸出結果是()

5.218

5.210

A:

5.200

B:

5.168

C:

答D:案:C

解析:求解過程:(int)(x*10+0.5)/10.0=(int)(5.168*10+0.5)/10.0

=(int)(51.68+0.5)/10.0=(int)(52.18)/10.0=52/10.0=5.200。

11、【單選題】關于函數(shù),下列敘述正確的是()

一個函數(shù)中可以定義其它的函數(shù)

程序總是從main()函數(shù)開始執(zhí)行

A:

main()函數(shù)也可以被其它函數(shù)調(diào)用

B:

一個C程序可以有多個main()函數(shù)

C:

答D:案:B

解析:一個C程序只能有一個main()函數(shù);C程序總是從main()函數(shù)開始執(zhí)行,并在

main()函數(shù)中結束;main()函數(shù)可以調(diào)用其它函數(shù)調(diào),其它函數(shù)之間可以相互調(diào)用,但不

能調(diào)用主函數(shù);函數(shù)不可以嵌套定義(在一個函數(shù)中定義其它的函數(shù)),但可以嵌套調(diào)

用。

12、【單選題】設charch=‘a(chǎn)’;,執(zhí)行printf(“%d,%c\n”,ch,ch+2);后的輸出

結果是()

97,c

97,99

A:

a,c

B:

a,a+2

C:

答D:案:A

解析:按%d的格式輸出,輸出的是‘a(chǎn)’對應的ASCII碼的值97,ch+2的值是‘c’,

按%c的格式輸出是字符c,所以選項A正確。

13、【單選題】下列敘述正確的是()

continue語句的作用是跳出循環(huán)體

while循環(huán)語句的循環(huán)體至少執(zhí)行一次

A:

do-while循環(huán)語句的循環(huán)體至少執(zhí)行一次

B:

switch語句中的每個case語句組必須含有break語句

C:

答D:案:C

解析:continue語句的作用是結束本次循環(huán),轉(zhuǎn)去執(zhí)行下一次循環(huán);do-while循環(huán)語句

的循環(huán)體至少執(zhí)行一次;while循環(huán)語句的循環(huán)體至少執(zhí)行0次;switch語句中的case

語句組可以含有break語句,也可以不含有break語句。

14、【單選題】設struct{intx;inty;}m[2]={7,3,2,1};,執(zhí)行printf(“%

d\n”,m[0].x/m[1].x*m[0].y);后的輸出結果是()

10.5

9

A:

8.0

B:

7

C:

答D:案:B

解析:m是一個結構體數(shù)組,m[0].x/m[1].x*m[0].y=7/2*3=3*3=9。

15、【單選題】設inta=l,b=2,c=3;,執(zhí)行表達式(a>b)&&(c=1)后c的值是()

0

1

A:

2

B:

3

C:

答D:案:D

解析:用&&對兩個表達式進行計算時,若第一個表達式的值為“假”,則運算結果與第二

個表達式的值無關,結果肯定為“假”,所以C語言規(guī)定此時第二個表達式將不再計算。

計算表達式(a>b)&(c=1),先計算a>b,值為0,表達式的值就是0,第二個表達式c=1不

再進行計算,變量c仍然保持原來的值3。

16、【問答題】#include<stdio.h>voidmain(){inta=0,b=2,c=3;switch(a)

{case0:switch(b==2){casel:printf(“*”);break;case2:printf

(“%”);break;}case1:switch(c){casel:printf(“$”);break;case2:

printf(“&”);break;default:printf(“#”);}}printf(“\n”);}

答案:*#

解析:本題考核的知識點是switch語句的嵌套應用。外層switch語句后面括號里的a的

值為0,所以執(zhí)行從case0:后面的語句開始執(zhí)行,而case0:后面語句也為switch語

句,這個switch語句后面括號里的b==2的值為1,執(zhí)行該switch語句里的case1:輸出

“*”,遇到break語句,退出內(nèi)層switch語句,由于外層switch語句的case0后面沒

有break語句,則繼續(xù)執(zhí)行下面的語句,即case1:后面的語句,又是switch語句,由于

c的值是3,所以執(zhí)行default:后面的語句printf(“#”);輸出“#”,所以程序的輸出

結果是*#。

17、【問答題】#includevoidfun(int*a,int*b,intx,inty){*a=x+y;*b=x-

y;}voidmain(){intc=8,d=4;fun(&c,&d,5,10);printf(“%d,%d”,c,

d);}

答案:c=15,d=-5

解析:

本題考查的是函數(shù)調(diào)用的問題。主函數(shù)中執(zhí)行語句fun(&c,&d,5,10);,指針變量a和

b分別指向變量c和d,形參x和y的值分別為10和5,執(zhí)行語句*a=x+y;*b=x-y;后,

指針變量a和b所指內(nèi)存單元的值分別變?yōu)?5和-5,由于指針變量a和b所指內(nèi)存單元

就是變量c和d的存儲位置,所以回到主函數(shù)后,變量c和d的值變成了15和-5。

18、【問答題】#include<stdio.h>intfun(intx){intp;if(x==1)return2;

elsep=x-fun(x-2);rerurnmp;}voidmain(){printf(“%d\n”,fun(9));}

答案:6

解析:主函數(shù)中調(diào)用fun(9)函數(shù),fun()函數(shù)中是一個遞歸調(diào)用的過程:fun(9)=9-

fun(7)=9-(7-fun(5))=9-(7-(5-fun(3)))=9-(7-(5-(3-fun(1))))=9-

(7-(5-(3-2)))=9-(7-(5-1))=9-(7-4)=9-3=6

19、【問答題】#include<stdio.h>inta=10;voidf(){inta=30;printf(“%

d,”,a);}voidmain(){f();printf(“%d\n”,a);}

答案:30,10

解析:本題考查的是局部變量和全局變量的區(qū)別。若在函數(shù)中定義與全局變量名字相同局

部變量,則全局變量在該函數(shù)中將不起作用。在主函數(shù)中調(diào)用f()函數(shù),執(zhí)行f()函數(shù)

printf(“%d,”,a);輸出的是在f()函數(shù)中定義的變量a的值30。在主函數(shù)中執(zhí)行

printf(“%d\n”,a);輸出的是全局變量a的值10。所以程序輸出結果為30,10。

20、【問答題】將數(shù)組a中元素按下圖循環(huán)左移一位并輸出。

#include

<stdio.h>voidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;

j<5;j++)a[j]=______;/*第一空*/a[4]=______;/*第二空*/for

(j=0;j<5;j++)printf(“%5d”,_______);/*第三空*/printf(“\n’’);}

答案:a[j+1]ka[j]

解析:第一個for循環(huán)負責將a[1]、a[2]、a[3]、a[4]四個元素依次左移1位,所以第一

空應該填a[j+1]。接下來應該將事先保存到變量k的原來a[0]的值賦給a[4],所以第二

空應該填k,注意不能填a[0]。第二個for循環(huán)負責輸出循環(huán)左移后數(shù)組5個元素,所以

第三空應該填a[j]。

21、【問答題】計算并輸出1!+2!+3!+4!+5!的值。#include<stdio.h>intf(inta)

{staticintc=1;c=c*a;return_____;/*第一空*/}voidmain(){inti,k;

k=_________;/*第二空*/for(i=2;i<=5;i++)k+=f(________);/*第三空*/

printf(“%d\n”,k);}

答案:c1i

解析:f()函數(shù)負責計算a的階乘并返回,所以第一空應該填c。主函數(shù)中的for循環(huán)中

i從2到5調(diào)用for分別求2~5階乘并累加到變量k中,調(diào)用f函數(shù)的實參應該是i,所

以第三空應該填i;而1的階乘顯然沒有計算在內(nèi),所以第二空應該填1,為k賦值為1。

22、【問答題】將文本文件fin.dat中的數(shù)字字符找出并寫入文本文件fnum.dat中。

#include<stdio.h>voidmain(){charch;FILE*fin,*fnum;fin=fopen

(“fin.dat”,________);/*第一空*/fnum=fopen(“fnum.dat”,“w’’);

while(!feof(_______))/*第二空*/{ch=fgetc(fin);if(______)fputc(ch,fnum);

/*第三空*/}fclose(fin);fclose(fnum);}

答案:"r"、fin、ch>='0'&&ch<='9'

解析:由于是將文本文件fin.dat中的數(shù)字字符找出并寫入文本文件fnum.dat中,所以

fin.dat文件以只讀方式打開,第一空填“r”。while(!feof(_______))含義是當fin所

指文件為到文件尾,繼續(xù)執(zhí)行循環(huán),所以第二空填fin。if(______)用來判斷讀入的字符

是否是數(shù)字字符,如果是數(shù)字字符,則寫入文本文件fnum所指文件中,所以第三空填

ch>='0'&&ch<='9'。

23、【問答題】從鍵盤輸入代表平面上某點的橫坐標x和縱坐標y,輸出x和y的值并按下

列要求輸出相應的標志。當x>0且y>0,屬于第一象限,輸出標志“A’’當x<0且y>0,屬

于第二象限,輸出標志“B”當x<0且y<0,屬于第三象限,輸出標志“C”當x>0且y<0,

屬于第四象限,輸出標志“D”當x=0或y=0,不屬于任何象限,輸出標志“E”

答案:#include<stdio.h>voidmain(){intx,y;scanf("%d%d",&x,&y);/*輸入x和y

的值*/if(x>0&&y>0)printf("A\n");/*屬于第一象限*/elseif(x<0&&y>0)

printf("B\n");/*屬于第二象限*/elseif(x<0&&y<0)printf("C\n");/*屬于第

三象限*/elseif(x>0&&y<0)printf("D\n");/*屬于第四象限*/else

printf("E\n");/*不屬于任何象限*/}

解析:輸入兩個數(shù)之后,使用if語句依次判斷它們所屬的象限即可。

24、【問答題】從鍵盤輸入一個4行5列的二維整型數(shù)組,輸出其每一行的最小值。

答案:#include<stdio.h>voidmain(){inti,j,a[4][5],min;for(i=0;i<4;i++)/*輸

入4行5列的數(shù)據(jù)*/{for(j=0;j<5;j++)scanf("%d",&a[i][j]);}for(i=0;i<4;i++)

{min=a[i][0];/*假設每行的第1個數(shù)為當前最小的*/for(j=1;j<5;j++)/*依次讀取

每行的其他元素,如果比當前最小的值小,則更新min*/{if(a[i][j]<min)

min=a[i][j];}printf("第%d行最小數(shù)為%d\n",i+1,min);}}

解析:先用一個雙重循環(huán)輸入4行5列的數(shù)據(jù)。然后再用一個雙重循環(huán)讀取數(shù)組中的每一

個元素,在讀取每行數(shù)據(jù)時,先假設每行的第1個數(shù)為最小的,然后用該行的每個數(shù)與最

小的比較,從而找出每行的最小值。

25、【填空題】表達式3!=6的值是_______________。

答案:1

解析:3不等于6成立,表達式3!=6的值為1。

26、【填空題】設inta=15;,執(zhí)行printf(“%d\n”,a>>2);后的輸出結果是

____________。

答案:3

解析:a>>2的含義是按位右移2位,先將a的值15轉(zhuǎn)換為2進制數(shù)00001111,按位右

移2位變?yōu)椋?0000011,按照%d格式輸出結果是3。

27、【填空題】設char*str=“People”;,執(zhí)行printf(“%s\n”,str+4);后的輸出

結果是____________。

答案:le

解析:str是字符串“People”的首地址,str+4是字符串“People”中l(wèi)的地址,按%s

輸出從l開始的字符串,輸出結果是le。

28、【填空題】執(zhí)行下面程序段,輸出“FIFA”的行數(shù)是____________。inti,j;

for(i=0;i<5;i++)for(j=1;j

答案:6

解析:i=0和1時,內(nèi)層循環(huán)1次也不執(zhí)行;i=2時,內(nèi)層循環(huán)執(zhí)行1次,輸出1行

“FIFA”;i=3時,內(nèi)層循環(huán)執(zhí)行2次,輸出2行“FIFA”;i=4時,內(nèi)層循環(huán)執(zhí)行3

次,輸出3行“FIFA”;一共輸出了6行“FIFA”。

29、【填空題】的C語言表達式是____________。

答案:1.0/(x+y)

溫馨提示

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

評論

0/150

提交評論