2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于C語言的函數(shù),下列敘述中正確的是()。

A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套

B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套

C.函數(shù)的定義和調(diào)用都不能嵌套

D.函數(shù)的定義和調(diào)用都可以嵌套

2.下列敘述中不正確的是()。

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量

3.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。

A.+1234-5678(中間有一個空格,最后有一個空格)

B.+1234-5678(最前面有一個空格,中間有一個空格)

C.+-1234+-5678(最前面和最后均無空格)

D.1234-5678(中間有兩個空格,最后有一個空格)

4.下面程序的輸出結(jié)果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}

A.SOB.SPC.SPOPKD.SHOB

5.一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

6.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

7.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

程序運(yùn)行后輸出的結(jié)果是A.A.63

B.36

C.編譯出錯

D.00

8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

9.信息隱蔽的概念與下述哪一種概念直接相關(guān)?

A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型的劃分D.模塊耦合度

10.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。

A.—個存儲區(qū),存放要讀的數(shù)據(jù)項

B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)

C.一個文件指針,指向要讀的文件

D.—個指針,指向讀入數(shù)據(jù)要存放的地址

11.設(shè)棧S的初始狀態(tài)為空,6個元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。

A.6B.4C.3D.2

12.以下選項中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

14.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

15.線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。

A.s->next=p;p->next=s;

B.s->next=p->next;p->next=s;

C.s->next=p->next;p=s;

D.p->next=s;s->next=p;

16.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

18.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結(jié)點(diǎn)C.數(shù)據(jù)類型D.數(shù)據(jù)項

19.下面哪種排序算法是穩(wěn)定的()

A.快速排序B.堆排序C.歸并排序D.選擇排序

20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10

二、2.填空題(20題)21.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("big=%d\n",big);

}

22.以下定義的結(jié)構(gòu)體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義比沖完整

structnode

{intinfo;

______link;};

23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

24.以下程序的輸出結(jié)果是______。

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

25.若x為血類型,請寫出與!x等價的C語言表達(dá)式______。

26.若i、j為int類型,則以下程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是【】。

for(i=5;i;i--)

for(j=0;j<3;j++)

{

}

27.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

28.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

29.若x,y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。

x=(y=4)+(z=2)

30.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)

arr[i]=i;

for(i=1;i<4;i++)

k+=arr[i]+i;

printf("%d\n"k);}

31.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。

32.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

33.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

}

printf("%d\n",s);

}

34.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

35.與表達(dá)式a+=b等價的另一書寫形式是______。

36.問題處理方案的正確而完整的描述稱為______。

37.以下程序輸出的最后一個值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

38.樹中度為零的結(jié)點(diǎn)稱為______。

39.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

運(yùn)行后,i,j,m,n的值分別是_______。

40.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

for(i=1;i<7;i++)

sum+=i;

primf("%d",sum);

}

三、1.選擇題(20題)41.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_

42.設(shè)變量a是int型,f是float型,i是double型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序運(yùn)行后的輸出結(jié)果是()

A.程序有錯不能運(yùn)行B.輸出4個NULLC.輸出0123D.輸出1111

44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

45.在下列關(guān)于邏輯表達(dá)式a&&b的敘述中,錯誤的一條是()

A.若a為真、b為真,則a&&b為真

B.若a為真、b為假,則a&&b為假

C.若a為假、b為真,則a&&b為真

D.若a為假、b為真,則a&&b為假

46.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

47.以下程序的運(yùn)行結(jié)果為______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

48.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()

A.scanf("%lf%lf%lf%lf%lf,a);

B.for(i=0;i<=5;i++)scanf("%lf,a+i);

C.while(i<5)scanf("%lf",&a[i++]);

D.while(i<5)seanf("%lf,a+i);

49.以下正確的說法是______。

A.實(shí)參和與其對應(yīng)的形參各占用獨(dú)立的存儲單元

B.實(shí)參和與其對應(yīng)的形參共用一個存儲單元

C.只有當(dāng)實(shí)參和與其對應(yīng)的形參同名時才共用存儲單元

D.型參是虛擬的,函數(shù)在沒有被調(diào)用時,不占用存儲單元

50.已定義以下函數(shù)

intfun(int*p)

{return*p;)

fun函數(shù)返回值是A.不確定的值B.一個整數(shù)C.形參P中存放的值D.形參P的地址值

51.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

52.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}

A.3B.6C.7D.5

53.有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x)

}

執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是

A.55B.54C.65D.45

54.請讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()

A.720B.120C.24D.6

55.設(shè)有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進(jìn)制值是

A.10100B.11011C.11100D.11000

56.若x是int型變量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的輸出結(jié)果是()

A.**3##4**5

B.##3**4##5

C.##3**4##5

D.**3##4**5

57.下列程序運(yùn)行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}

A.8B.7C.6D.5

58.fscanf函數(shù)的正確調(diào)用形式是()。

A.fscanf(文件指針,格式字符串,輸出表列);

B.fscanf(格式字符串,輸出表列,文件指針);

C.fscanf(格式字符串,文件指針,輸入表列);

D.fscanf(文件指針,格式字符串,輸入表列);

59.在下列敘述中,正確的一條是()

A.表達(dá)式1+2<<3和sizeof(3.8)的結(jié)果分別為24和8

B.函數(shù)fputc(c,stdout)與putchar(c)的結(jié)果相同

C.語句int*pt中的*pt是指針變量名

D.主函數(shù)和其他函數(shù)可以互相調(diào)用

60.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。

A.8B.16C.32D.15

四、選擇題(20題)61.

62.以下關(guān)于retllm語句的敘述中正確的是()。

A.一個自定義函數(shù)中必須有一條return語句

B.一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條retum語句

C.定義成void類型的函數(shù)中可以有帶返回值的return語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

63.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0

64.

65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

66.

67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。A.-1B.1C.4D.0

68.

69.有以下程序:

main()

{intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i++];i++}

Printf("%d\n",k);

}

執(zhí)行后輸出的結(jié)果是()。

A.57B.39C.24D.11

70.

71.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

72.若有以下語句

73.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

printf("%d%d\n",i,j);

}

程序運(yùn)行后的輸出結(jié)果是()。

A)22B)76

C)75D)62

74.

75.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

76.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

77.下列關(guān)于C語言的敘述錯誤的是()。

A)大寫字母和小寫字母的意義相同

B)不同類型的變量可以在一個表達(dá)式中

C)在賦值表達(dá)式中等號(=)左邊的變量和右邊的值可以是不同類型

D)同一個運(yùn)算符號在不同的場合可以有不同的含義

78.

79.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應(yīng)該添加的頭文件是()。

A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H

80.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.10B.16C.6D.12

五、程序改錯題(1題)81.在主函數(shù)中從鍵盤輸入若干個數(shù)放人數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)proc()的功能是計算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值為78、-65、-15、35、-45、0,則程序的運(yùn)行結(jié)果為-41.666667。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為s=5.878031。n的值要求大于1但不大于100。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A

2.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

3.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號表示輸出的數(shù)字帶正負(fù)號號表示輸出數(shù)據(jù)向左對齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個空格,最后有一個空格)。本題答案為A選項。

4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串中的第一個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。

6.D

7.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實(shí)參指向的變量的值,不能使實(shí)參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。

在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實(shí)參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實(shí)現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。

8.Cmain函數(shù)定義兩個double類型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個double類型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時x的值為6.5,y指向a,z指向b?!?y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后,輸出a的值為1.5。故本題答案為C選項。

9.B解析:采用信息隱蔽的目的就是為了確保每個模塊的獨(dú)立性。

10.Dfread函數(shù)用來讀二進(jìn)制文件,其中buffer是數(shù)據(jù)塊的指針,它是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存中;size表示每個數(shù)據(jù)塊的字節(jié)數(shù);count用來指定每讀一次讀入的數(shù)據(jù)塊個數(shù);fp是文件指針,指向要讀的文件。選項A、B、C錯誤。本題答案為D選項。

11.C

12.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。

\n

13.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項A)和C)符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。

14.B題目中嵌套語句的含義是當(dāng)“a<b”且“a<c”成立時,將a的值賦給k。如果“a<b”成立而“a<c”不成立,則將c的值賦給k。如果“a<b”不成立而“b<c”成立,則將b的值賦給k。如果“a<b”不成立且“b<c”也不成立,則將c的值賦給k。判斷條件表達(dá)式,只有B選項可以表示這個含義。故本題答案為B選項。

15.B

16.D

17.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運(yùn)算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。

18.D

19.C

20.Bstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時已給出長度為10。

21.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。

本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;

數(shù)據(jù)類型標(biāo)識符(*指針變量名)();

“數(shù)據(jù)類型標(biāo)識符”表示函數(shù)返回值的類型。

函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。

22.解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*,即定義一個指向自身的結(jié)構(gòu)體指針。

23.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。

24.80。80。解析:p=a+2使指針p指向數(shù)組a的第三個元素,即a[2],(p+2)[3]使p再移動5個單位,則指向了數(shù)組元素a[7],它的值為80。

25.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

26.1515解析:執(zhí)行二重循環(huán)時,外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)將循環(huán)一遍。本題的程序段中外循環(huán)執(zhí)行了5次,內(nèi)循環(huán)執(zhí)行了3次,所以程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是15。

27.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

28.完整性控制完整性控制

29.6

30.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

31.數(shù)據(jù)定義語言數(shù)據(jù)定義語言解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言,數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建,數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、恢復(fù)等功能。

32.&a&bmaxintxyreturn(z)

33.9292解析:本題的主函數(shù)中首先定義了一個4行4列的二維數(shù)組,然后執(zhí)行一個while循環(huán),該循環(huán)中又嵌套了一個do-while循環(huán)。先看while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán),當(dāng)i++的值為4的時候結(jié)束循環(huán),當(dāng)i=O時,執(zhí)行while的循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓j=0,然后執(zhí)行do-while循環(huán)體,不難看出do-while循環(huán)的功能是將第i+1行的所有元素加起來,所以這時s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,當(dāng)i=1時,i+1=2,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時,i加1變?yōu)?,把第3+1行的所有元素的值加到s上,此時s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,當(dāng)i=3時,3+1=4,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán)當(dāng)i=4時while循環(huán)結(jié)束,所以最后輸出的s的值為92。

34.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,p[1]=&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=&x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。

35.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

36.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

37.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運(yùn)行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。

本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。

38.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。

39.611610。6,11,6,10。解析:本題考查自加的前置和后置的區(qū)別。

40.無定值無定值解析:for(i=l;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。

41.D解析:本題考核的知識點(diǎn)是用戶的標(biāo)識符。在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,d_ad、_adf124,_124等都是合法的標(biāo)識符號.而2asdf、_sd/=都不是合法的標(biāo)識符.在C語言中大寫字母和小寫字母被認(rèn)為是兩個不同的字符,如:ACD和acd是兩個不同的標(biāo)識符號。選項D中用下劃線作為第一個字符,這是不合法的,故選項D不正確,所以,4個選項中選項D符合題意。

42.C解析:根據(jù)混合運(yùn)算規(guī)則,如果有一個數(shù)據(jù)是float型或double型,則其他數(shù)據(jù)類型先轉(zhuǎn)化為double型,運(yùn)算的結(jié)果最終也是double型。

43.A

44.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。

45.C

46.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。

47.A

48.C

49.D解析:形參在個數(shù)和類型上要與實(shí)參匹配,形參在未被調(diào)用之前,不占用存儲單元。

50.B解析:p中存放的是地址值,但是*p間接引用了p指向的整數(shù)值。因此返回一個整數(shù)。

51.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。

52.D

53.A本題主要考查函數(shù)的遞歸調(diào)用。在做遞歸調(diào)用函數(shù)類型的題目時,我們首先要找到函數(shù)的出口和遞歸結(jié)束的條件。

在本題中,程序首先定義了一個fun函數(shù),函數(shù)的形參是一個整型變量n,從后面的程序可以看出,該函數(shù)是一個遞歸函數(shù)。在函數(shù)體中,首先執(zhí)行條件判斷語句,如果條件結(jié)果為真,說明變量n為1,此時返回1,這是遞歸函數(shù)的出口;否則返回函數(shù)的遞歸調(diào)用。

在主函數(shù)中,定義一個變量x,并試圖通過鍵盤輸入的方式為變量x賦初值,然后調(diào)用fun函數(shù),并用x作為其形參,用x保存最后的運(yùn)行結(jié)果輸出。

變量x的初值為10,從上面的分析我們知道,遞歸調(diào)用的出口是n=1,而每遞歸一次n的值減1,因此,函數(shù)fun遞歸調(diào)用了9次,其運(yùn)算相當(dāng)于10+9+8+7+6+5+4+3+2+1=55。因此,程序最終的輸出結(jié)果是55。

54.B

55.B解析:本題考查兩個位運(yùn)算符。按位異或運(yùn)算符“”’是雙目運(yùn)算符,其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相異或,當(dāng)兩對應(yīng)的二進(jìn)位相異或時,結(jié)果為1。左移運(yùn)算符“<<”是雙目運(yùn)算符,其功能把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補(bǔ)0,并且“<<”運(yùn)算符的優(yōu)先級于“^”。

56.D

57.D

58.D解析:fscanf的調(diào)用形式是:fscanf(文件指針,格式字符串,輸入表列);

59.C

60.B[答案]B

[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法

[評析]依次從上到下,可得出:

第1層結(jié)點(diǎn)數(shù)為1;

第2層結(jié)點(diǎn)數(shù)為2*1=2;

第3層結(jié)點(diǎn)數(shù)為2*2=4;

第n層結(jié)點(diǎn)數(shù)為2的n-1次冪

61.C

62.B在函數(shù)中允許有多個IettLrll語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語句,c選項描述錯誤。沒有return語句的函數(shù)在執(zhí)行到函數(shù)的最后一條語句后會自動返回到調(diào)用處,A、D選項描述錯誤。因此B選項正確。

63.BC88e常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達(dá)式,找到與之匹配的Case語句,就從此case子句執(zhí)行下去,不在進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case2語句的a++;b++;a為2,b為1。所以結(jié)果為B。

64.B

65.B本題考查按位異或的用法。按位異或運(yùn)算的規(guī)則是:兩個運(yùn)算數(shù)的相應(yīng)二進(jìn)制位相同,則結(jié)果為0,相異則結(jié)果為1。b=2的二進(jìn)制為00000010,a=1的二進(jìn)制為00000001,a=a^b=00000011,轉(zhuǎn)化為十進(jìn)制后為3,b=b^a=00000010-00000011=00000001,即1。

66.B

67.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。

68.C

69.D循環(huán)的條件是i<7并且p[i]是奇數(shù),當(dāng)i=0時,i<7,p[i]=11,滿足條件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,為偶數(shù),退出循環(huán),這時k還是11.

70.B

71.A本題重點(diǎn)考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實(shí)參的問題,運(yùn)行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因?yàn)橹羔榗指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。

72.A本題考核的知識點(diǎn)是結(jié)構(gòu)體類型定義和結(jié)構(gòu)體的基本概念。結(jié)構(gòu)體類型的定義格式為:slxuct結(jié)構(gòu)體名{成員說明列表};結(jié)構(gòu)體變量的定義有3種形式。第一種:定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如struct結(jié)構(gòu)體名{成員說明列表)變量;第二種:先定義一個結(jié)構(gòu)體類型,然后使用該類型來定義結(jié)構(gòu)體變量,如structstudent{成員說明列表l;student變量;第三種:定義一個無名稱的結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如truct§tudent{成員說明列表l變量。

73.C數(shù)組a中有5個元素a,0,0,a,0占7個字節(jié)的內(nèi)容。最后一個\\0為結(jié)束符。

74.D

75.C算術(shù)運(yùn)算符+的優(yōu)先級高于-=.且-=的結(jié)合方向?yàn)樽杂蚁蜃?,所以表達(dá)式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,選擇C。

76.D本題考查文件操作函數(shù),兩次fwrite后,幣文件中已經(jīng)寫入l,2,3,O,0,l,2,3,0,0然后將文件幣中的內(nèi)容重新寫人數(shù)組a中,最后輸出a為1。2,3,0,0,1,2,3,0,0,所以選項D正確。

77.AC語言中,大小寫代表不同的兩個標(biāo)識符。

78.C

79.B頭文件;C語言中要用庫函數(shù),則需在前面添加頭文件。輸入輸出函數(shù)的頭文件為”stdio.h”

80.D第一個for循環(huán)作用是對數(shù)組8賦初值,從0~9,第二個缸循環(huán)是計算數(shù)組前4項的a[i]+i的和。0+0,1+1,2+2,3+3,經(jīng)計算的結(jié)果為l2,因此答案為D選項。

81.

82.

【解析】首先定義一個變量來存放表達(dá)式的和.根據(jù)題目中提供的多項式,通過n次循環(huán)來求出n項的和。最后把所求得的和返回到主函數(shù)當(dāng)中。

2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于C語言的函數(shù),下列敘述中正確的是()。

A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套

B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套

C.函數(shù)的定義和調(diào)用都不能嵌套

D.函數(shù)的定義和調(diào)用都可以嵌套

2.下列敘述中不正確的是()。

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量

3.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。

A.+1234-5678(中間有一個空格,最后有一個空格)

B.+1234-5678(最前面有一個空格,中間有一個空格)

C.+-1234+-5678(最前面和最后均無空格)

D.1234-5678(中間有兩個空格,最后有一個空格)

4.下面程序的輸出結(jié)果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}

A.SOB.SPC.SPOPKD.SHOB

5.一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

6.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

7.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

程序運(yùn)行后輸出的結(jié)果是A.A.63

B.36

C.編譯出錯

D.00

8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

9.信息隱蔽的概念與下述哪一種概念直接相關(guān)?

A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型的劃分D.模塊耦合度

10.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。

A.—個存儲區(qū),存放要讀的數(shù)據(jù)項

B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)

C.一個文件指針,指向要讀的文件

D.—個指針,指向讀入數(shù)據(jù)要存放的地址

11.設(shè)棧S的初始狀態(tài)為空,6個元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。

A.6B.4C.3D.2

12.以下選項中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

14.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

15.線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。

A.s->next=p;p->next=s;

B.s->next=p->next;p->next=s;

C.s->next=p->next;p=s;

D.p->next=s;s->next=p;

16.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

18.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結(jié)點(diǎn)C.數(shù)據(jù)類型D.數(shù)據(jù)項

19.下面哪種排序算法是穩(wěn)定的()

A.快速排序B.堆排序C.歸并排序D.選擇排序

20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10

二、2.填空題(20題)21.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("big=%d\n",big);

}

22.以下定義的結(jié)構(gòu)體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義比沖完整

structnode

{intinfo;

______link;};

23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

24.以下程序的輸出結(jié)果是______。

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

25.若x為血類型,請寫出與!x等價的C語言表達(dá)式______。

26.若i、j為int類型,則以下程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是【】。

for(i=5;i;i--)

for(j=0;j<3;j++)

{

}

27.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

28.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

29.若x,y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。

x=(y=4)+(z=2)

30.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)

arr[i]=i;

for(i=1;i<4;i++)

k+=arr[i]+i;

printf("%d\n"k);}

31.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。

32.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

33.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

}

printf("%d\n",s);

}

34.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

35.與表達(dá)式a+=b等價的另一書寫形式是______。

36.問題處理方案的正確而完整的描述稱為______。

37.以下程序輸出的最后一個值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

38.樹中度為零的結(jié)點(diǎn)稱為______。

39.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

運(yùn)行后,i,j,m,n的值分別是_______。

40.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

for(i=1;i<7;i++)

sum+=i;

primf("%d",sum);

}

三、1.選擇題(20題)41.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_

42.設(shè)變量a是int型,f是float型,i是double型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。

A.intB.floatC.doubleD.不確定

43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序運(yùn)行后的輸出結(jié)果是()

A.程序有錯不能運(yùn)行B.輸出4個NULLC.輸出0123D.輸出1111

44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

45.在下列關(guān)于邏輯表達(dá)式a&&b的敘述中,錯誤的一條是()

A.若a為真、b為真,則a&&b為真

B.若a為真、b為假,則a&&b為假

C.若a為假、b為真,則a&&b為真

D.若a為假、b為真,則a&&b為假

46.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

47.以下程序的運(yùn)行結(jié)果為______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

48.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()

A.scanf("%lf%lf%lf%lf%lf,a);

B.for(i=0;i<=5;i++)scanf("%lf,a+i);

C.while(i<5)scanf("%lf",&a[i++]);

D.while(i<5)seanf("%lf,a+i);

49.以下正確的說法是______。

A.實(shí)參和與其對應(yīng)的形參各占用獨(dú)立的存儲單元

B.實(shí)參和與其對應(yīng)的形參共用一個存儲單元

C.只有當(dāng)實(shí)參和與其對應(yīng)的形參同名時才共用存儲單元

D.型參是虛擬的,函數(shù)在沒有被調(diào)用時,不占用存儲單元

50.已定義以下函數(shù)

intfun(int*p)

{return*p;)

fun函數(shù)返回值是A.不確定的值B.一個整數(shù)C.形參P中存放的值D.形參P的地址值

51.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

52.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}

A.3B.6C.7D.5

53.有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x)

}

執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是

A.55B.54C.65D.45

54.請讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()

A.720B.120C.24D.6

55.設(shè)有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進(jìn)制值是

A.10100B.11011C.11100D.11000

56.若x是int型變量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的輸出結(jié)果是()

A.**3##4**5

B.##3**4##5

C.##3**4##5

D.**3##4**5

57.下列程序運(yùn)行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}

A.8B.7C.6D.5

58.fscanf函數(shù)的正確調(diào)用形式是()。

A.fscanf(文件指針,格式字符串,輸出表列);

B.fscanf(格式字符串,輸出表列,文件指針);

C.fscanf(格式字符串,文件指針,輸入表列);

D.fscanf(文件指針,格式字符串,輸入表列);

59.在下列敘述中,正確的一條是()

A.表達(dá)式1+2<<3和sizeof(3.8)的結(jié)果分別為24和8

B.函數(shù)fputc(c,stdout)與putchar(c)的結(jié)果相同

C.語句int*pt中的*pt是指針變量名

D.主函數(shù)和其他函數(shù)可以互相調(diào)用

60.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。

A.8B.16C.32D.15

四、選擇題(20題)61.

62.以下關(guān)于retllm語句的敘述中正確的是()。

A.一個自定義函數(shù)中必須有一條return語句

B.一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條retum語句

C.定義成void類型的函數(shù)中可以有帶返回值的return語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

63.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0

64.

65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

66.

67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。A.-1B.1C.4D.0

68.

69.有以下程序:

main()

{intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i++];i++}

Printf("%d\n",k);

}

執(zhí)行后輸出的結(jié)果是()。

A.57B.39C.24D.11

70.

71.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

72.若有以下語句

73.有以下程序:

main()

{

chara[7]="a0\OaO\0";inti,j;

i=sizeof(a);j=strlen(a);

printf("%d%d\n",i,j);

}

程序運(yùn)行后的輸出結(jié)果是()。

A)22B)76

C)75D)62

74.

75.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

76.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

77.下列關(guān)于C語言的敘述錯誤的是()。

A)大寫字母和小寫字母的意義相同

B)不同類型的變量可以在一個表達(dá)式中

C)在賦值表達(dá)式中等號(=)左邊的變量和右邊的值可以是不同類型

D)同一個運(yùn)算符號在不同的場合可以有不同的含義

78.

79.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應(yīng)該添加的頭文件是()。

A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H

80.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.10B.16C.6D.12

五、程序改錯題(1題)81.在主函數(shù)中從鍵盤輸入若干個數(shù)放人數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)proc()的功能是計算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值為78、-65、-15、35、-45、0,則程序的運(yùn)行結(jié)果為-41.666667。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為s=5.878031。n的值要求大于1但不大于100。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A

2.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

3.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號表示輸出的數(shù)字帶正負(fù)號號表示輸出數(shù)據(jù)向左對齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個空格,最后有一個空格)。本題答案為A選項。

4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串中的第一個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。

6.D

7.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實(shí)參指向的變量的值,不能使實(shí)參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。

在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實(shí)參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實(shí)現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。

8.Cmain函數(shù)定義兩個double類型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個double類型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時x的值為6.5,y指向a,z指向b?!?y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后

溫馨提示

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

評論

0/150

提交評論