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頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.下列程序的輸出結(jié)果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

2.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責(zé)的是()。

A.數(shù)據(jù)庫維護(hù)B.數(shù)據(jù)庫設(shè)計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉(zhuǎn)換

3.

4.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

5.以下程序的輸出結(jié)果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

6.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

7.在一個鏈?zhǔn)疥犃兄?,假設(shè)f和r分別為隊頭和隊尾指針,則刪除結(jié)點的運(yùn)算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

8.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4

9.以下說法中正確的是()。

A.C程序總是從第一個定義的函數(shù)開始執(zhí)行

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

C.C函數(shù)必須有返回值,否則不能使用函數(shù)

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個程序文件中

10.

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

A.測試工作必須由程序編制者自己完成

B.測試用例和調(diào)試用例必須一致

C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進(jìn)行測試

D.上述三種說法都不對

12.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

13.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運(yùn)算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

14.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

15.下列程序的輸出結(jié)果是()。char*point(char*pt):main{charb[4]={a,c,s,f),*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A.sB.cC.fD.a

16.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

17.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是________。

A.23B.26C.33D.36

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

19.下列語句組中正確的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

20.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

二、2.填空題(20題)21.以下程序通過函數(shù)SunFun()調(diào)用F(x),x的值從0到10,這里F(x)=x2+1,由F函數(shù)實現(xiàn),請?zhí)羁铡?/p>

#include<stdio.h>

intSunFun(int);

intF(int);

main()

{pfintf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

F(intx)

{return(【】);}

22.度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為______。

23.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

24.設(shè)有宏定義:

#defineWIDTH80

#defineLENGTHWIDTH+40

則執(zhí)行賦值語句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。

25.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。

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

main()

{intx,a=1,b=2,c=3,d=4;

{intx,a=1,b=2,c=3,d=4;

x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;

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

}

27.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

28.實體之間的聯(lián)系可以歸結(jié)為一對一聯(lián)系、一對多(或多對多)的聯(lián)系與多對多聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實體集學(xué)校與實體集教師之間的聯(lián)系屬于______的聯(lián)系。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

30.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

31.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

32.以下isprime函數(shù)的功能是判斷形參a是否為素數(shù),是素數(shù),函數(shù)返回1,否則返回0。請?zhí)羁铡?/p>

intisprime(inta)

for(i=2;i<=a/2;i++)

if(a%i==0)[8];

[9];

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

34.設(shè)有如下宏定義

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】,a,b);

35.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

36.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

37.若有如下程序:

voidsub()

{staticintx=8;

x/=2;printf("%d",x);

}

main()

{intm;

for(m=0;m<2;m++)sub();}

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

38.以下程序運(yùn)行后輸入3,abcde<回車>,則輸出結(jié)果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

scanf("%d,%s",&n,s);

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

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

}

39.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。

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

main()

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

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

三、1.選擇題(20題)41.設(shè)有以下說明語句structstu{inta;floatb;}stutype;則下面的敘述不正確的是

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.structstu是用戶定義的結(jié)構(gòu)體類型

C.stutype是用戶定義的結(jié)構(gòu)體類型名

D.a和b都是結(jié)構(gòu)體成員名

42.在設(shè)計程序時,應(yīng)采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結(jié)構(gòu)應(yīng)有助于讀者理解

43.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.++b;C.a=a++5;D.a=double(b);

44.有以下程序:main(){inti;for(i=1,i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

45.假定下列程序的可執(zhí)行文件名為filel.exe,在該程序的子目錄下輸入命令行:file1ChinaBejing<回車>main(intargc,char*argv[]){while(argc-->1)printf("%s\n",*++argv);}則程序運(yùn)行后的輸出結(jié)果是()。

A.filelChinaBejingB.ChinaBejingC.ChinaD.Bejing

46.有以下程序:main(){chara[]="abcdefg",b[10]="abedefg";printf("%d%d\n",sizeof(A),sizeof(B));}執(zhí)行后輸出結(jié)果是()。

A.77B.88C.810D.1010

47.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}執(zhí)行后的輸出結(jié)果是()

A.32767B.FFFEC.-1D.-32768

48.C語言中下列敘述正確的是_______。

A.不能使用do...while語句構(gòu)成的循環(huán)

B.do...while語句構(gòu)成的循環(huán),必須用break語句才能退出

C.do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時結(jié)束循環(huán)

D.do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán)

49.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在橫線處應(yīng)填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

50.以下程序執(zhí)行后sum的值是()main(){inti,sum;for(i;i<6;i++)sum+=i;printf("%d\n",sum);}

A.15B.14C.不確定D.0

51.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯D.程序運(yùn)行時產(chǎn)生出錯信息

52.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

53.有以下程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(P[i][0]=='T')n++;returnn;}main(){charstr[][10]={"Mon","Tue","wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.3D.0

54.對下述程序,正確的判斷是()main(){inta,b,seanf("%d,%d",&a,&b);if(a>b)a=b;b=a;elsea++;b++printf("%d,%d",a,b);}

A.有語法錯誤不能通過編譯B.若輸入4,5則輸出5,6C.若輸入5,4則輸出4,5D.若輸入5,4則輸出5,5

55.假設(shè)在turboc2.0采用small模式編譯如下程序main(){chara[4]={'a','b'};char*b="abc";printf("%d,%d",sizeof(a),sizeof(b));}其輸出結(jié)果為______。

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

56.數(shù)字字符0的ASCII值為48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-A);}程序運(yùn)行后的輸出結(jié)果是

A.3,2B.50,2C.2,2D.2,50

57.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

58.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達(dá)式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

59.設(shè)有以下語句

typedefstructS

{intg;charh;}T;

則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

60.在C語言中,while和do…while循環(huán)的主要區(qū)別是()。

A.do…while的循環(huán)體不能是復(fù)合語句

B.do…while允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)

C.while的循環(huán)體至少被執(zhí)行一次

D.do…while的循環(huán)體至少被執(zhí)行一次

四、選擇題(20題)61.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進(jìn)行插入與刪除時,不需要移動表中的元素

D.以上說法均不正確

62.有以下程序:

#include<stdio.h>

main()

{FILE*fp;charstr[10];

fp=fopen("myfile,dat","");

{puts("abe",ip);fclose(fp);

fp=fopen("myfile.dat","a*");

fprintf(fp,"%d",28);

rewind(fp);

fscanf(fp,"%S",str);puts(str);

fclose(fp);

}

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

A.abcB.28cC.abc28D.內(nèi)類型不一致而出錯

63.以下可用作C語言用戶標(biāo)識符的是()

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,--abc,Case

D.2a,Do,Sizeof

64.

65.

66.下面程序的輸出結(jié)果為()。

structst

{intx;

int*y;

}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[1],

70,&dt[2],80&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10B.50C.51D.60

20606070

20212131

67.

68.下面程序的輸出結(jié)果是

#include<stdio.h>

main(){

inti=2;

printf("%d",f(i,i+1));

}

intf(inta,intb)

{intc;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;elsec=-1;

return(c);

}

A.-1B.0

C.1D.2

69.有以下程序

#include<stdio.h>

main()

{unsignedchara;

a=4^6;

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

}

程序的運(yùn)行結(jié)果是

A.4,B.2,

C.2D.4

70.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

71.高有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876<空格>854.0<回車>,a和b的值分別是()。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

72.有定義如下:

structsk

{inta;

floatb;

}data,*p;

如果p=&data;則對于結(jié)構(gòu)變量data的成員a的正確引用時()

A)(*).data.aB)(*p).a

C)p->data.aD)p.data.a

73.

74.

75.有以下程序:

#include<stdio.h>

main()

{inta=7;

while(a--);

print[("%d\n",a);

}

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

A.-l

B.0

C.1

D.7

76.(72)n個頂點的強(qiáng)連通圖的邊數(shù)至少有______。

A.n-1

B.n(n-1)

C.n

D.n+1

77.設(shè)在C語言中,float類型數(shù)據(jù)占4個字節(jié),則double類型數(shù)據(jù)占()個字節(jié)。

A.1B.2C.8D.4

78.第

34

若有如下語句

intx=3;

do{printf("%d\n",x-=2);}

while(!(--x));

則上面程序段

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

79.算法的有窮性是指()。

A.算法程序的運(yùn)行時問是有限的。

B.算法程序所處理的數(shù)據(jù)量是有限的

C.算法程序的長度是有限的

D.算法只能被有限的用戶使用

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設(shè)計題(1題)82.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫proc()函數(shù),它的功能是:求出該學(xué)生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學(xué)生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應(yīng)當(dāng)是78.625。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D本題考夢自增運(yùn)算符“++”、邏輯與運(yùn)算符“&&”和邏輯或運(yùn)算符“||”。自增運(yùn)算符“++”出現(xiàn)在變量之前,表示先使用變量的值加l,再使用變量的值進(jìn)行運(yùn)算;出現(xiàn)在變量之后,表示先使用變量的值進(jìn)行運(yùn)算,再使用變量的值加l。當(dāng)邏輯與運(yùn)算符“&&’’兩邊的運(yùn)算對象都為真時,邏輯表達(dá)式的值才為真;當(dāng)邏輯或運(yùn)算符“||”只要一個值為1,值就為1。根據(jù)運(yùn)算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運(yùn)算,因此運(yùn)算時j的值等于3,所以表達(dá)式++j=3成立,即表達(dá)式的值為1;1與任何數(shù)都為進(jìn)行或(||)運(yùn)算,結(jié)果都為1,因此k=3的表達(dá)式i++是先運(yùn)算后自加,因此運(yùn)算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

2.DD)【解析】數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設(shè)計、維護(hù)、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設(shè)計。DBA的主要任務(wù)之一是數(shù)據(jù)庫設(shè)計,具體地說是進(jìn)行數(shù)據(jù)模式的設(shè)計;數(shù)據(jù)庫維護(hù)。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進(jìn)行實施與維護(hù);改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運(yùn)行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。

3.D

4.C

5.B解析:考查指針作為參數(shù)的函數(shù)調(diào)用。盡管C語言以傳值方式進(jìn)行函數(shù)調(diào)用,但也可以通過傳遞指針的值(變量的地址)來達(dá)到修改實參變量值的目的,這是此題主要說明的問題。另外,應(yīng)注意表達(dá)式\ue008*(z++)\ue009的值是*z,其后的z++在程序中無實際作用。函數(shù)調(diào)用時,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調(diào)用函數(shù)時,*x=a=10,*y=b=40,*z=c=20輸出結(jié)果為11,41,20,至此,已經(jīng)可以肯定選項B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。

6.B

7.C

8.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1

9.B解析:C++程序總是從main函數(shù)開始執(zhí)行。

10.A

11.D解析:測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進(jìn)行的,其目的是設(shè)法暴露程序中的錯誤和缺陷,一般應(yīng)當(dāng)避免由開發(fā)者測試自己的程序,因此,選項A錯誤;測試是為了發(fā)現(xiàn)程序錯誤,不能證明程序的正確性,調(diào)試主要是推斷錯誤的原因,從而進(jìn)一步改正錯誤,調(diào)試用例與測試用例可以一致,也可以不一致,選項B錯誤;測試發(fā)現(xiàn)錯誤后,可進(jìn)行調(diào)試并改正錯誤:經(jīng)過調(diào)試后的程序還需進(jìn)行回歸測試,以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引進(jìn)新的錯誤,選項C錯誤。

12.A程序定義整型變量a和i,其中a的初值為7。for循環(huán)中,循環(huán)變量i的取值為1,2,3。循環(huán)體中判斷a的取值,當(dāng)a>14時,執(zhí)行break跳出循環(huán);當(dāng)a取值為奇數(shù)時,a%2==1,a自增3,執(zhí)行continue繼續(xù)執(zhí)行循環(huán)體;當(dāng)a取值為偶數(shù)時,a%2==0,a自增4,輸出i和a的值。i取值為1時,a取值為7,自增3后a的值為10,執(zhí)行下一個循環(huán)。i取值為2時,a取值為10,自增4后a的值為14,輸出2,14。i取值為3時,a取值為14,自增4后a的值為18,輸出3,18。i取值為4時,a取值為18,循環(huán)終止,輸出4,18。綜上,程序輸出:2,14,3,18,4,18。本題答案為A選項。

13.D

14.D因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。

15.C本題考查函數(shù)的調(diào)用及參數(shù)傳遞,當(dāng)執(zhí)行函數(shù)point時,剛開始指針P指向“a”,經(jīng)過+3,指針p指向“f”,所以最后的輸出結(jié)果是f。

16.D在輸入整數(shù)或?qū)崝?shù)這類數(shù)值型數(shù)據(jù)時,輸入數(shù)據(jù)之間必須用空格、回車符、制表符等間隔符隔開,間隔符個數(shù)不限。scanf的格式控制字符串也可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。故本題答案為D選項。

17.A解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針?biāo)赶虻臄?shù)組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應(yīng)為3。

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

19.BA選項去掉花括號后,賦值正確;C選項和D選項應(yīng)在定義時賦初值,因為數(shù)組名相當(dāng)于常量,不能重新賦值。故本題答案為B選項。

20.C

21.xx*x+1x\r\nx*x+1解析:本題考查函數(shù)的調(diào)用。P(x)的含義為x的平方加1,所以第一處應(yīng)填x;第二處應(yīng)填x*x+1。

22.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標(biāo)順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。

23.調(diào)試調(diào)試

24.880

25.類類

26.11解析:條件運(yùn)算表達(dá)式:“表達(dá)式1?表達(dá)式2:表達(dá)式3”,但表達(dá)式1的值為非0時,此時表達(dá)式2的值就是整個條件表達(dá)式的值,反之為表示式3的值。解析易知結(jié)果為1。

27.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實現(xiàn)的。

28.一對多或1:N。一對多或1:N。

29.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。

30.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標(biāo)記形式有abe.a和p_abc->a。

31.k<=nk++k<=n,k++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句'k++;'\ue009。

32.如果a能被i整除,則a是素數(shù),返回值為0。如果a不能被i整除,則a不是素數(shù),返回值為1。

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

34.cc解析:本題關(guān)鍵在考生是不是了解宏的基本運(yùn)用,在使用宏的時候明顯少了—個實參。在定義宏的時候變量z是用來做中間變量的,題目中缺的變量就是一個中間變量c。

35.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍?,循環(huán)隊列應(yīng)當(dāng)是物理結(jié)構(gòu)。

36.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實例。

37.4242解析:主函數(shù)中的for循環(huán)循環(huán)兩次,即函數(shù)sub()被調(diào)用兩次。在sub()中x被定義為靜態(tài)整型變量,當(dāng)調(diào)用函數(shù)sub()完畢返回主函數(shù),x中的值仍然保留,下次調(diào)用函數(shù)sub()時,x不再被賦初值。第1次調(diào)用x/=2相當(dāng)于x=x/2=8/2=4,第2次調(diào)用x=x/2=4/2=2,因此輸出42。

38.cdeabcdeab解析:本題move()函數(shù)的作用,是將形參s仕所指地址的連續(xù)n位循環(huán)右移1位,即讓str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函數(shù)中用了一個for循環(huán)調(diào)用move()函數(shù),共循環(huán)3次,所以數(shù)組s被循環(huán)右移了3位,故最后輸出的值為cdeab。

39.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

40.24

41.C解析:定義一個結(jié)構(gòu)的一般形式為:

struct結(jié)構(gòu)名

{

成員列表

};

本題中,stutype是在聲明類型的同時定義的structstu類型的變量。而不是用戶定義的結(jié)構(gòu)體類型名。我們需要注意以下幾點:①類型與變量是不同的概念;②對結(jié)構(gòu)體中的成員,可以單獨使用,它的作用與地位相當(dāng)于普通變量;③成員也可以是一個結(jié)構(gòu)體變量;④成員名可以與程序中的變量名相同,二者不代表同一對象。

42.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)不選;注解行有利于對程序的理解,不應(yīng)減少或取消,選項B)也不選;程序的長短要依照實際情況而論,而不是越短越好,選項C)也不選。

43.B解析:要解答此題只要知道兩個知識點:①在C語言中規(guī)定進(jìn)行強(qiáng)制類型轉(zhuǎn)換的格式是:(double)變量名;②在C語言中不允許給表達(dá)式賦值。

44.C解析:i=30時,條件表達(dá)式“i++%5==0”為真,i++后i=31,++i后i=32,即條件表達(dá)式“++i%8==0”為真。

45.B解析:主函數(shù)的第一個參數(shù)argc為整形參數(shù),記下從命令行輸入的參數(shù)的個數(shù);第二個參數(shù)argv是一個字符型的指針數(shù)組,它的每一個指針指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為3,argv[0]指向字符串.“filel”,argv[l]指向參數(shù)字符串“China”,argv[2]指向字符串“Bejing”。在main()函數(shù)中,while循環(huán)執(zhí)行了2次。第1次循環(huán),argc=3,3>1為真,argc-1=3-1=2,執(zhí)行循環(huán)體輸出*++argv,argv為字符型的指針數(shù)組的數(shù)組名,代表數(shù)組的首地址,同時也是數(shù)組第1個元素的地址,++argv指向數(shù)組的第2個元素,第2個元素是一個指針,它指向字符串“China”。第2次循環(huán),argc=2,2>1為真,argc-1=2-1=1,執(zhí)行循環(huán)體輸出*++argv,這次循環(huán)畔++argv指向數(shù)組的第3個元素,第3個元素是一個指針,它指向字符串“Bejing”。argc=1時,1>1為假,退出循環(huán)。所以,4個選項中選項B符合題意。

46.C解析:本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdefg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8。定義時b的長度定義為10,故b的長度為lo,因此最后通過函數(shù)sizeom求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項c符合題意。

47.C

48.D解析:選項A是錯誤的,C語言支持do…while語句;選項B是錯誤的,do…while構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán),而不是非零;選項C也是錯誤的。

49.D解析:該程序先判斷a[i]<a[p],如果條件為真,則a[i]比當(dāng)前設(shè)定的最小值小(p保留的當(dāng)前最小元素的下標(biāo)),那么將i賦給p,即將比較過的最小元素下標(biāo)保留在p中,作為下面判斷的標(biāo)準(zhǔn)。

50.C

51.B解析:(a1,a2)是一個逗號表達(dá)式,它的值為a2的值即m,以字符格式輸出表達(dá)式的值即輸出小寫字母m。

52.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。

53.B解析:fun()函數(shù)實現(xiàn)的功能為查找二維字符數(shù)組第一列中為字符T的個數(shù)。二維數(shù)組的地址作為函數(shù)的實參。

54.A

55.A解析:用small模式編譯,指針變量占2個字節(jié)。sizeof(array):數(shù)組名array代表數(shù)組本身,sizeof函數(shù)測出的是整個數(shù)組的大小。a數(shù)組的大小為4,b指針變量的大小為2。

56.C解析:本題考查了字符型變量的運(yùn)算及輸出。在C語言中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內(nèi)存中只占1個字節(jié),而整型是2個字節(jié)。字符型變量中所存的數(shù)值是它所表示字符的ASCII碼值。ASCII碼中的一些相關(guān)字符是順序排列的,如\'0\'的ASCII碼值為48,\'1\'為49以此類推一直到\'9\';\'A\'的ASCII碼值為65,\'B\'為66以此類推一直到\'Z\'。本題程序一開始就定義了兩個字符型變量a和b,并初始化為字符\'1\'和\'2\',由于題目已經(jīng)告訴,0,的ASCII值為48,所以變量a、b中所存儲的數(shù)據(jù)分別為49和50。第一條輸出語句是按字符格式輸出表達(dá)式b++的值和字符\',\',后綴自加表達(dá)式b++的值就是b的值,不過執(zhí)行完該表達(dá)式之后,變量b中的值會增1。所以第一次輸出的字符串是'2,',執(zhí)行完后b中的數(shù)據(jù)為51.第二條輸出語句是按整型格式輸出表達(dá)式b-a的值和一個換行符\'\\n\',b-a的值是51-49=2,故最終的輸出應(yīng)該為'2,2\\n',\'\\n\'是非打印字符,即不會在屏幕上顯示什么,所以,4個選項中選項C符合題意。

57.C解析:本題考核的知識點是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。

58.C解析:主函數(shù)中定義了一個整型變量a,一個整型指針變量b和一個二級指針變量c,并讓c指向指針變量b,讓指針b指向整形變量a,所以**c為變量a的值,所以,4個選項中選項C符合題意。

59.B解析:結(jié)構(gòu)體類型的定義格式為:

strcut結(jié)構(gòu)體名

{成員說明列表};

結(jié)構(gòu)體變量的定義有3種形式:第一種:定義結(jié)構(gòu)體型的同時定義結(jié)構(gòu)體變量如:strcut結(jié)構(gòu)體名{成員說明列表}變量;第二種先定義一個結(jié)構(gòu)體類型,然后使用該類型來定義結(jié)構(gòu)體變量,如:strcutstudent{成員說明列表):student變量;第三種:定義一個無名稱的結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如:Strctstudent{成員說明列表}變量。和上面三種情況比較我們不難得知只有選項B是正確的。所以,4個選項中選項B符合題意。

60.D解析:本題考查while和do…while循環(huán)的區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面的表達(dá)式的值為非零時,才可能執(zhí)行循環(huán)體:在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此無論表達(dá)式的值是否為零,循環(huán)體至少要被執(zhí)行一次。

61.CC【解析】一般來說,在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變結(jié)點的指針域即可。

62.C\n本題考查文件的操作,首先打開文件,進(jìn)行寫操作,把“abc”寫入“myfile”文件,再打開“myfile.data'文件,輸入28,在鍵盤上接收字符,輸出并關(guān)閉文件。本題結(jié)果為abc28。

\n

63.BC語言規(guī)定用戶標(biāo)識符由字母、數(shù)字和下劃線組成,且第一個字符必須是字母或下劃線,可見選項C),D)是錯誤的;此外,c語言不允許用戶將關(guān)鍵字作為標(biāo)識符,而選項A)中的void正是C語言的關(guān)鍵字。

64.C

65.B

66.Cp指向aa的首地址,++p->x首先取x的值,再增1,即50+1;(++p)->x使p指向下一元素,然后取其值,即60,++(*p->y)取y指向的值,即20,然后增1,即20+1

67.C

68.A這道題的求解方法比較簡單,將i的值帶入函數(shù)f(),可以發(fā)現(xiàn)在if判斷語句中,第一次判斷為假,而在else語句中的第二個判斷亦為假,所以,c的值應(yīng)當(dāng)?shù)扔?1,最后打印結(jié)果為“-1”。

69.B本題主要考查位運(yùn)算?!鞍次划惢颉边\(yùn)算(^)是雙目運(yùn)算符,其功能是把參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相異或。該操作通常用來使一個數(shù)中某些指定位翻轉(zhuǎn),而另一些位保持不變,操作時,它的兩對應(yīng)位相同結(jié)果為0,不同則為1。

本題中,首先將十進(jìn)制數(shù)4和6轉(zhuǎn)換為二進(jìn)制數(shù),分別為00000100和00000110,然后對其進(jìn)行按位異或運(yùn)算,得到的結(jié)果為00000010,轉(zhuǎn)換為十進(jìn)制數(shù)是2,在對其進(jìn)行輸出時需要注意輸出的格式,在輸出的結(jié)果后面添加了一個逗號,因此,最后程序輸出的結(jié)果是“2,”,本題的正確答案是B。

70.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進(jìn)行賦值后,然后返回變量a。

71.Bseanf函數(shù)用空格區(qū)分不同字符串的輸入,因此876和543.0被看作兩段輸入。%2d只選取了第一個輸人中的前兩位,%f選取隨后的數(shù)字作為浮點數(shù),因此輸出結(jié)果為87和6.000000。

72.B結(jié)構(gòu)體變量的引用。

73.C

74.C

75.A\n此題考查a--和--a之間的區(qū)別,當(dāng)while(a--)為真循環(huán)執(zhí)行,a--是執(zhí)行再減1,所以答案選擇A。

\n

76.C

77.C

\n在C語言中各種數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)與機(jī)器的位數(shù)有關(guān),16位機(jī)中(也就是在標(biāo)準(zhǔn)c中),若int類型數(shù)據(jù)占2個字節(jié),則float類型數(shù)據(jù)占4個字節(jié),double類型數(shù)據(jù)占8個字節(jié)。

\n

78.Bdo-while語句的一般格式為:do循環(huán)體語句while(表達(dá)式);先執(zhí)行循環(huán)體語句一次,再判斷表達(dá)式的值,若為真,則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行printf('%d\n',x=-2)后,值為x=x-2,即為1。判斷表達(dá)式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時表達(dá)式?。?-x)的值為0,結(jié)束循環(huán)。

79.A算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次運(yùn)算后即可完成。有窮性是指算法程序的運(yùn)行時間是有限的。

80.D

81.(1)錯誤:for(i=j=0;str[i]!=0;i++)

\n正確:for(i=j=0;str[i]!=\0;i++)

\n(2)錯誤:str[j]=str[i];

\n正確:str[i++]=str[i];

\n【解析】根據(jù)題目中的要求,從字符串str中刪除所有大寫字母F,需要檢查字符串str中的每一個字符,直到字符串結(jié)束,因此,“for(i=j=0;str[i]!=0;i++)”應(yīng)改為“for(i=J=0;str[i]!=0;i++)”;將每一個不是F的字符放入原來的字符串中,形成新的字符串,因此,“str[j]=str[i];”應(yīng)改為“str[j++]=str[i];”。

\n

82.

【解析】要求該學(xué)生的平均成績,首先要求出其各科成績之和,然后求出其平均成績并放在成員變量ave中。

</i<p)為()。2021年安徽省蚌埠市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的輸出結(jié)果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

2.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責(zé)的是()。

A.數(shù)據(jù)庫維護(hù)B.數(shù)據(jù)庫設(shè)計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉(zhuǎn)換

3.

4.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

5.以下程序的輸出結(jié)果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

6.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

7.在一個鏈?zhǔn)疥犃兄?,假設(shè)f和r分別為隊頭和隊尾指針,則刪除結(jié)點的運(yùn)算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

8.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4

9.以下說法中正確的是()。

A.C程序總是從第一個定義的函數(shù)開始執(zhí)行

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

C.C函數(shù)必須有返回值,否則不能使用函數(shù)

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個程序文件中

10.

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

A.測試工作必須由程序編制者自己完成

B.測試用例和調(diào)試用例必須一致

C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進(jìn)行測試

D.上述三種說法都不對

12.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

13.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運(yùn)算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

14.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

15.下列程序的輸出結(jié)果是()。char*point(char*pt):main{charb[4]={a,c,s,f),*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A.sB.cC.fD.a

16.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

17.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是________。

A.23B.26C.33D.36

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

19.下列語句組中正確的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

20.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

二、2.填空題(20題)21.以下程序通過函數(shù)SunFun()調(diào)用F(x),x的值從0到10,這里F(x)=x2+1,由F函數(shù)實現(xiàn),請?zhí)羁铡?/p>

#include<stdio.h>

intSunFun(int);

intF(int);

main()

{pfintf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

F(intx)

{return(【】);}

22.度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為______。

23.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

24.設(shè)有宏定義:

#defineWIDTH80

#defineLENGTHWIDTH+40

則執(zhí)行賦值語句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。

25.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。

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

main()

{intx,a=1,b=2,c=3,d=4;

{intx,a=1,b=2,c=3,d=4;

x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;

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

}

27.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

28.實體之間的聯(lián)系可以歸結(jié)為一對一聯(lián)系、一對多(或多對多)的聯(lián)系與多對多聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實體集學(xué)校與實體集教師之間的聯(lián)系屬于______的聯(lián)系。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

30.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

31.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

32.以下isprime函數(shù)的功能是判斷形參a是否為素數(shù),是素數(shù),函數(shù)返回1,否則返回0。請?zhí)羁铡?/p>

intisprime(inta)

for(i=2;i<=a/2;i++)

if(a%i==0)[8];

[9];

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

34.設(shè)有如下宏定義

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】,a,b);

35.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

36.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

37.若有如下程序:

voidsub()

{staticintx=8;

x/=2;printf("%d",x);

}

main()

{intm;

for(m=0;m<2;m++)sub();}

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

38.以下程序運(yùn)行后輸入3,abcde<回車>,則輸出結(jié)果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

scanf("%d,%s",&n,s);

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

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

}

39.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。

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

main()

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

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

三、1.選擇題(20題)41.設(shè)有以下說明語句structstu{inta;floatb;}stutype;則下面的敘述不正確的是

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.structstu是用戶定義的結(jié)構(gòu)體類型

C.stutype是用戶定義的結(jié)構(gòu)體類型名

D.a和b都是結(jié)構(gòu)體成員名

42.在設(shè)計程序時,應(yīng)采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結(jié)構(gòu)應(yīng)有助于讀者理解

43.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.++b;C.a=a++5;D.a=double(b);

44.有以下程序:main(){inti;for(i=1,i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

45.假定下列程序的可執(zhí)行文件名為filel.exe,在該程序的子目錄下輸入命令行:file1ChinaBejing<回車>main(intargc,char*argv[]){while(argc-->1)printf("%s\n",*++argv);}則程序運(yùn)行后的輸出結(jié)果是()。

A.filelChinaBejingB.ChinaBejingC.ChinaD.Bejing

46.有以下程序:main(){chara[]="abcdefg",b[10]="abedefg";printf("%d%d\n",sizeof(A),sizeof(B));}執(zhí)行后輸出結(jié)果是()。

A.77B.88C.810D.1010

47.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}執(zhí)行后的輸出結(jié)果是()

A.32767B.FFFEC.-1D.-32768

48.C語言中下列敘述正確的是_______。

A.不能使用do...while語句構(gòu)成的循環(huán)

B.do...while語句構(gòu)成的循環(huán),必須用break語句才能退出

C.do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時結(jié)束循環(huán)

D.do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán)

49.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在橫線處應(yīng)填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

50.以下程序執(zhí)行后sum的值是()main(){inti,sum;for(i;i<6;i++)sum+=i;printf("%d\n",sum);}

A.15B.14C.不確定D.0

51.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯D.程序運(yùn)行時產(chǎn)生出錯信息

52.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

53.有以下程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(P[i][0]=='T')n++;returnn;}main(){charstr[][10]={"Mon","Tue","wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.3D.0

54.對下述程序,正確的判斷是()main(){inta,b,seanf("%d,%d",&a,&b);if(a>b)a=b;b=a;elsea++;b++printf("%d,%d",a,b);}

A.有語法錯誤不能通過編譯B.若輸入4,5則輸出5,6C.若輸入5,4則輸出4,5D.若輸入5,4則輸出5,5

55.假設(shè)在turboc2.0采用small模式編譯如下程序main(){chara[4]={'a','b'};char*b="abc";printf("%d,%d",sizeof(a),sizeof(b));}其輸出結(jié)果為______。

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

56.數(shù)字字符0的ASCII值為48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-A);}程序運(yùn)行后的輸出結(jié)果是

A.3,2B.50,2C.2,2D.2,50

57.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

58.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達(dá)式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

59.設(shè)有以下語句

typedefstructS

{intg;charh;}T;

則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

60.在C語言中,while和do…while循環(huán)的主要區(qū)別是()。

A.do…while的循環(huán)體不能是復(fù)合語句

B.do…while允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)

C.while的循環(huán)體至少被執(zhí)行一次

D.do…while的循環(huán)體至少被執(zhí)行一次

四、選擇題(20題)61.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進(jìn)行插入與刪除時,不需要移動表中的元素

D.以上說法均不正確

62.有以下程序:

#include<stdio.h>

main()

{FILE*fp;charstr[10];

fp=fopen("myfile,dat","");

{puts("abe",ip);fclose(fp);

fp=fopen("myfile.dat","a*");

fprintf(fp,"%d",28);

rewind(fp);

fscanf(fp,"%S",str);puts(str);

fclose(fp);

}

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

A.abcB.28cC.abc28D.內(nèi)類型不一致而出錯

63.以下可用作C語言用戶標(biāo)識符的是()

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,--abc,Case

D.2a,Do,Sizeof

64.

65.

66.下面程序的輸出結(jié)果為()。

structst

{intx;

int*y;

}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[1],

70,&dt[2],80&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10B.50C.51D.60

20606070

20212131

67.

68.下面程序的輸出結(jié)果是

#include<stdio.h>

main(){

inti=2;

printf("%d",f(i,i+1));

}

i

溫馨提示

  • 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

提交評論