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

下載本文檔

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

文檔簡介

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

0034220121

1、【單選題】C語言的保留字是【】

ILE

define

A:

auto

B:

lse

C:

答D:案:C

解析:①所有的保留字均由小寫字母組成,一旦有一個字母大寫,其不再是保留字。②

根據(jù)保留字的作用,C語言的保留字分為四類。數(shù)據(jù)類型關(guān)鍵字(12個):char,double,

enum,float,int,long,short,signed,struct,union,unsigned,void控制語句關(guān)

鍵字(12個):break,case,continue,default,do,else,for,goto,if,return,

switch,while存儲類型關(guān)鍵字(4個):auto,extern,register,static其它關(guān)鍵字(4

個):const,sizeof,typedef,volatile

2、【單選題】正確的實型常數(shù)是【】

lE0

1E0.0

A:

1E

C:

答D:案:A

解析:C語言中實型常量只使用十進制,它的書寫形式有兩種:(1)十進制數(shù)形式:(必

須有小數(shù)點)如0.123,.123,123.0,0.0,123.(2)指數(shù)形式:(e或E之前必須有數(shù)

字;e后面的指數(shù)必須為整數(shù))如12e3,123E2,1.23e-4,錯誤表示:e-5,1.2E-3.5

3、【單選題】設(shè)intn=0;,執(zhí)行表達式n||(n=-1)||(n=0)||(n=1)||(n=2)后n的值是【】

-1

1

A:

2

C:

答D:案:A

解析:多個表達式進行||計算時,若某個表達式的值為“真”,則運算結(jié)果與這個表達式

后面表達式的值無關(guān),結(jié)果肯定為“真”,所以C語言規(guī)定此時這個表達式后面的表達式

不再計算。執(zhí)行表達式n||(n=-1)||(n=0)||(n=1)||(n=2)時,表達式n的值為0,表達式

(n=-1)的值為1,后面的表達式(n=0)、(n=1)、(n=2)都不再計算,所以,n的值為-1。

4、【單選題】設(shè)inta=4;,表達式的值不為8的是【】

a*=a-2

a--,3*a-1

A:

a>1?++a*2:3*a

B:

a+=a

C:

答D:案:C

解析:選項A,a=a*(a-2)=4*(4-2)=8;選項B,a--,3*a-1的計算過程:先取a的值

4作為第一個表達式的值,然后a的值減1變?yōu)?,然后計算第二個表達式3*a-1為3*3-

1=8,整個都好表達式的值就是第二個表達式的值8;選項C,a>1?++a*2:3*a,由于a>1

成立,所以++a*2的值10(a先加1變?yōu)?再乘2)時整個條件表達式的值;選項D,

a=a+a=4+4=8。

5、【單選題】設(shè)inta,b,t;,不能實現(xiàn)a和b的值交換的語句是【】

a=t;t=b;b=a;

t=a;a=b;b=t;

A:

t=b;b=a;a=t;

B:

a=a+b,b=a-b,a=a-b;

C:

答D:案:A

解析:選項A,最后a和b的值相同,都t最早的值。選項B和選項C都完成了a和b的

值交換,也很容易理解。選項D,執(zhí)行b=a-b時這里的a已經(jīng)最初的a的值+b,所以執(zhí)行

b=a-b相當于最初的a+b-b,所以實際完成了最初的a賦給了b;執(zhí)行a=a-b時這里的a已

經(jīng)最初的a的值+b,這里的b已經(jīng)是最初的a的值,所以執(zhí)行a=a-b完成的是最初的b賦

給a,從而實現(xiàn)a和b的值交換。

6、【單選題】設(shè)intx,*p;,正確的賦值語句是【】

*p=&x;

*p=*x;

A:

p=x;

B:

p=&x;

C:

答D:案:D

解析:選項A,*p的含義是指針p所指整型變量,&x的含義是變量x的地址,不能把&x

賦給*p。選項B,x是整型變量,不能進行*指針運算。選項C,整型變量x的值不能賦給

指針變量p。選項D,將整型變量的地址賦給指針p是正確的語句。

7、【單選題】設(shè)inti=1,s=1;,下列能正確計算5!的是【】

while(i++<=5)s*=i;

for(;i<4;i++)s*=i++;

A:

do{s*=i;}while(i<=4);

B:

for(;i<=5;i++)s*=i;

C:

答D:案:D

解析:選項A,實際計算的是s=1*2*3*4*5*6。選項B,實際計算的是s=1*1*3。選項C,

實際計算的是s=1*1*1*…,是死循環(huán)。選項D,實際計算的是s=1*1*2*3*4*5。

8、【單選題】函數(shù)float*fun(){...…}返回的是【】

地址

實型值

A:

整型值

B:

字符常數(shù)

C:

答D:案:A

解析:float*fun(){...…}說明fun是一個函數(shù),該函數(shù)的返回值的類型是基類型為

float的指針類型。float(*fun)(){...…}說明fun是一個指向函數(shù)的指針變量,這個

函數(shù)必須是float類型。

9、【單選題】下列敘述正確的是【】

實參不能是表達式

函數(shù)可以沒有形式參數(shù)

A:

在一個函數(shù)中只能有一個return語句

B:

函數(shù)定義時,若函數(shù)類型缺省則默認的類型是void

C:

答D:案:B

解析:實參可以是表達式;函數(shù)可以沒有形式參數(shù);在一個函數(shù)中可以有多個return語

句,但是,每調(diào)用一次該函數(shù)只能有一個return語句被執(zhí)行;函數(shù)定義時,若函數(shù)類型

缺省則默認的類型是int。

10、【單選題】設(shè)intm[]={5,4,3,2,1},i=2;,數(shù)組元素引用錯誤的是【】

m[--i]

m[i*i]

A:

m[m[0]]

B:

m[i-2]

C:

D:

答案:C

解析:選項A,相當于引用m[1];選項B,相當于引用m[4];選項C,相當于引用m[5],

數(shù)組m最大下標就是4,是錯誤的引用;選項D,相當于引用m[0]。

11、【單選題】11?設(shè)intn=8;,執(zhí)行while(n>5)(n--;printf("%2d",n);)后的輸出結(jié)

果是【】

8765

876

A:

765

B:

76

C:

答D:案:C

解析:作為一條獨立的C語句n--;和語句--n;及n=n-1;效果都是一樣的,都是將n的

值減1,所以輸出結(jié)果是C。

12、【單選題】設(shè)intb,a[]=(1,2,3,4),*p=a;,與b=*p++;等價的語句是【】

b=*(++p);

b=*(p++);

A:

=p++;

B:

b=*++p;

C:

答D:案:B

解析:b=*(++p)與b=*++p等價,含義都是指針p加1后指向a[1],取出元素a[1]的值賦

給變量b。*p++中的運算符*和++的優(yōu)先級是相同的,他們的結(jié)合方向是自右至左,

b=*(p++);和b=*p++;等價,含義都是取出指針p所指元素a[0]的值賦給變量b,然后指針

p加1后指向a[1]。另外,inti=10,*p=&i;*p+=1;/*該語句等價于i+=1;*/++*p;/*

該語句等價于++i;*/(*p)++;/*該語句等價于i++;*/*p++;/*該語句的作用是先取*p的

值作為表達式的值,指針p加1;*/

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

inta[3][3]=[0,1];

inta[3][3]={0,1,2,3,4,5,6,7,8,9};

A:

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

B:

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

C:

答D:案:D

解析:選項A錯誤,初始化數(shù)組用“{}”而不是“[]”或“()”。選項B錯誤,對

定義二維數(shù)組的同時進行初始化,但初始化的元素個數(shù)比數(shù)組長度多。選項C錯誤,不論

什么情況,定義二維數(shù)組時也不能省略第2維的長度。選項D正確,定義二維數(shù)組的同

時,按行進行了初始化,省略第一維是可以的。

14、【單選題】設(shè)typedefchar*POINT;,若有引用POINTp,q[5];,則【】

p是字符型變量,q是字符型數(shù)組

p是字符型變童,q是字符型指針數(shù)組

A:

p是字符型指針變量,q是字符型數(shù)組

B:

p是字符型指針變量,q是字符型指針數(shù)組

C:

答D:案:D

解析:POINT是指向char的指針類型,所以p是字符型指針變量,q是字符型指針數(shù)

組。

15、【單選題】文件使用方式“wb"的含義是【】

對文本文件只寫

對二進制文件只寫

A:

對文本文件讀和寫

B:

對二進制文件讀和寫

C:

答D:案:B

解析:文件使用方式:r:讀w:寫+:讀寫b:二進制文件使用方式|含義

“r/rb”(只讀)|為讀打開一個文本/二進制文件“w/wb”(只寫)|為寫打開或建立

一個文本/二進制文件,新寫的內(nèi)容覆蓋原來的內(nèi)容“r+/rb+”(讀寫)|為讀/寫打開

一個文本/二進制文件“w+/wb+”(讀寫)|為讀/寫建立一個文本/二進制文件

16、【問答題】#include<stdio.h>voidmain(){inty=10;for(;y>0;y--)if(y%3==

0){printf("%3d",--y);continue;}printf("\n");}

答案:852

解析:在循環(huán)過程中,y分別等于9、6、3時,y%3==0成立,分別執(zhí)行執(zhí)行

printf("%3d",--y);輸出852。continue只是一個迷惑,continue的作用跳過

continue之后的循環(huán)體語句,重新判斷循環(huán)控制條件,決定是否繼續(xù)循環(huán),而本題中

continue之后沒有循環(huán)體語句。

17、【問答題】執(zhí)行下列程序,輸入數(shù)據(jù):abed/#include<stdio.h>voidmain(){int

c;while((c=getchar())!='\n'){switch(c-'a'){case0:case1:putchar(c+3);

break;case2:putchar(c+2);default:putchar(c+1);break;}}printf"\n");}

答案:deede

解析:一共執(zhí)行四次循環(huán):第一次循環(huán),c的到的字符‘a(chǎn)’,switch(c-'a')括號中的

值為0,執(zhí)行case0:后面的語句,case0:后面沒有語句,繼續(xù)執(zhí)行執(zhí)行case1:后面的

語句putchar(c+3);輸出字符‘d’,然后執(zhí)行break跳出switch語句。第二次循環(huán),c

的到的字符‘b’,switch(c-'a')括號中的值為1,執(zhí)行case1:后面的語句

putchar(c+3);輸出字符‘e’,然后執(zhí)行break跳出switch語句。第三次循環(huán),c的到的

字符‘c’,switch(c-'a')括號中的值為2,執(zhí)行case2:后面的語句putchar(c+2);

輸出字符‘e’,后面沒有break語句,繼續(xù)執(zhí)行default:后面的語句putchar(c+1);輸

出字符‘d’,然后執(zhí)行break跳出switch語句。第四次循環(huán),c的到的字符‘d’,

switch(c-'a')括號中的值為3,執(zhí)行default:后面的語句putchar(c+1);輸出字符

‘e’,然后執(zhí)行break跳出switch語句。所以輸出結(jié)果為deede。

18、【問答題】intfun(intm){staticintn=1;++m;n++;return(m+n);}void

main(){inta,b;a=fun(0);b=fun(10);printf("a=%d,b=%d\n",a,b);}

答案:a=3,b=14

解析:本題考察靜態(tài)變量,靜態(tài)變量只在第一次調(diào)用所在函數(shù)時進行初始化,以后調(diào)用不

再進行初始化而是使用上次調(diào)用結(jié)束時該變量的值。調(diào)用fun(0),返回的是m+n=1+2=3,

調(diào)用fun(10)返回m+n=11+3=14

19、【問答題】#include<stdio.h>intx=1;voidfx(intp){x=p+x;p++;}void

main(){inta=3;fx(a);printf("%d%d\n",a,x);}

答案:34

解析:x是全局變量,在main()和fx()中都起作用。調(diào)用fx(a);a的3傳給形參p,

計算:x=1+3=4,執(zhí)行p++;后拍的值變?yōu)?,但不會回傳給變量a。所以最后輸出結(jié)果是3

4。

20、【問答題】計算s=1+2+3+...…十n,直到s的值大于1000為止,輸出s和n的值.

#include<stdio.h>voidmain(){intn,s;;/*第一空*/for(n=1;;n++){s=s+n;if

(s>1000);/*第二空*/}printf("s=%dn=%d\n",);/*第三空*/

答案:s=0breaks,n

解析:由于變量s存儲累加和,所以初值要置為1,所以第一空填s=0。當s的值大于

1000要結(jié)束循環(huán),所以第二空填break。最后輸出s和你的值,所以第三空填s,n。

21、【問答題】某班30名學(xué)生,由鍵盤輸入每個學(xué)生的姓名和兩門課的成績,輸出其中兩

門課都通過(成績大于等于60分)的學(xué)生姓名和成績。#include<stdio.h>#defineN30

structstudent{charname[20];intsl,s2;};/*第一空*/voidmain(){inti;

for(i=0;i<N;i++)scanf("%s%d%d",stu[i].name,);/*第二空*/for(i=0;i<N;i++)

{if()/*第三空*/printf("%s%d%d\n",stu[i].name,stu[i].sl,stu[i].s2);}

答案:stu[N]stu[i].s1,stu[i].s2stu[i].s1>=60&&stu[i].s2>=60

解析:主函數(shù)中stu[i].name,stu應(yīng)該是結(jié)構(gòu)體數(shù)組,主函數(shù)中并沒有定義該數(shù)組,所

以第一空的位置要定義該數(shù)組,所以第一空填stu[N]。用scanf完成學(xué)生的姓名和兩門課

的成績的輸入,第二空填stu[i].s1,stu[i].s2。第三空的位置要判斷兩門課都大于等于

60,所以應(yīng)該填stu[i].s1>=60&&stu[i].s2>=60。

22、【問答題】打印如下的乘法表。124369481216……9182736……81

voidmain(){inti,j:for(i=1;;i++)/*第一空*/{for(j=1j<=;j++)

printf("%5d",i*j);/*第二空*/;/*第三空*/}}

答案:i<=9iprintf("\n")

解析:外層循環(huán)負責(zé)控制打印的行數(shù),所以第一空填i<=9。內(nèi)層循環(huán)負責(zé)控制每行打印的

數(shù)的個數(shù),所以第二空填i。第三空的語句負責(zé)換行,所以應(yīng)該填printf("\n")。

23、【問答題】由鍵盤輸入10個實型數(shù)到數(shù)組,求它們的平均值,輸出平均值和其中大于

平均值的數(shù)。

答案:#include<stdio.h>voidmain(){inti;floata[10],ave=0;for(i=0;

i<10;i++){scanf(“%f”,&a[i]);/*輸入10個實型數(shù)到數(shù)組*/ave+=a[i];

/*求10個實型數(shù)的和*/}ave=ave/10;/*計算平均值*/printf("ave=%f\n",ave);

/*輸出平均值*/for(i=0;i<10;i++)if(a[i]>ave)printf("%f\n",a[i]);/*

輸出大于平均值的數(shù)*/

解析:利用循環(huán)輸入10個實型數(shù)到數(shù)組的同時求取10個數(shù)的和,然后計算平均值,最后

輸出輸出平均值和其中大于平均值的數(shù)。

24、【問答題】(1)寫出求三角形面積的函數(shù),函數(shù)頭為:floatarea(floata,floatb,

floatc)三角形面積公式:

,其中:

(2)寫出主函數(shù),根據(jù)下圖提

供的各邊的長度,調(diào)用上述函數(shù),計算并輸出多邊形的面積。

答案:#include<match.h>/*函數(shù)area()中用到函數(shù)sqrt()需要包含該函數(shù)庫

*/#include<stdio.h>floatarea(floata,floatb,floatc){floatt,s;

t=(a+b+c)/2;s=sqrt(t*(t-a)*(t-b)*(t-c));/*計算三角形面積*/return

s;}main(){floats1;s1=area(6.3,7.5,4.0)+area(3.7,7.5,8.0)+area(5.2,

6.1,8.0);/*調(diào)用三次area函數(shù)計算多邊形的面積*/printf(“s1=%f\n”,s1);}

解析:通過調(diào)用三次area函數(shù)分別求的組成計算多邊形的三個三角形的面積,它們的和

就是多邊形的面積。

25、【填空題】設(shè)intx=3;,執(zhí)行printf("%d\n",x+(x-=x*x));后的輸出結(jié)果是

______。

答案:-12

解析:先計算x=x-(x*x)=3-(3*3)=-6,x的值就變成了-6,然后計算x=x+(-6)=-6+(-

6)=-12,最后x的值和整個表達式的值都是-12,所以輸出結(jié)果為-12。

26、【填空題】b2-4ac≥0對應(yīng)的C語言關(guān)系表達式是______。

答案:b*b-4*a*c>=0

解析:b2-4ac≥0對應(yīng)的C語言關(guān)系表達式是b*b-4*a*c>=0。

27、【填空題】設(shè)charstr[10]="abc";,執(zhí)行printf(

溫馨提示

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

評論

0/150

提交評論