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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

2.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

3.執(zhí)行下列程序后,輸出的結(jié)果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

a/=S(k+m)/S(k+m);

printf("%d",A);

}

A.1B.4C.9D.0

4.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

5.下列說法不正確的是()。

A.圖的遍歷是從給定的源點(diǎn)出發(fā)每一個頂點(diǎn)僅被訪問一次

B.圖的深度遍歷不適用于有向圖

C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷

D.圖的深度遍歷是一個遞歸過程

6.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨(dú)立的源程序文件

C.C語言編寫的每個函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

7.下列敘述中錯誤的是()。

A.在C語言中,函數(shù)中的自動變量可以賦初值,每調(diào)用一次賦一次初值

B.在C語言中,在調(diào)用函數(shù)時,實參和對應(yīng)形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數(shù)形參的存儲類型是自動(auto)類型的變量

8.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是

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

9.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運(yùn)行后的輸出結(jié)果是A.2B.1C.3D.0

10.關(guān)系R和關(guān)系S的并運(yùn)算是______。

A.由關(guān)系R和關(guān)系S的所有元組合并組成的集合,再刪去重復(fù)的元組

B.由屬于R而不屬于S的所有元組組成的集合

C.由既屬于R又屬于S的元組組成的集合

D.由R和S的元組連接組成的集合

11.數(shù)據(jù)庫是()的集合,它具有統(tǒng)一的結(jié)構(gòu)格式并存放于統(tǒng)一的存儲介質(zhì),可被各個應(yīng)用程序所共享

A.視圖B.消息C.數(shù)據(jù)D.關(guān)系

12.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運(yùn)行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19

13.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

14.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。

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

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

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

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

15.對n個數(shù)進(jìn)行排序,哪種算法,其時間復(fù)雜度在最壞和最好都是O(nlogn)()

A.快速排序B.希爾排序C.堆排序D.選擇排序

16.

17.

18.以下不正確的敘述是A.A.在C程序中,逗號運(yùn)算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在計算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變

D.當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值

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

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

20.設(shè)有定義“intm=1,n=2;”,則以下if語句中,編譯時會產(chǎn)生錯誤信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像和【】。

23.在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為【】。

24.下面程序的輸出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

25.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

26.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計語言寫成程序。

27.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

28.在軟件測試中,動態(tài)測試和靜態(tài)測試手段只能發(fā)現(xiàn)程序中的錯誤,而不能證明程序中不存在錯誤,只有【】證明才有可能證明程序的正確性。

29.若a=l,b=2,則表達(dá)式!(x=a)||y=b)&&0的值是______。

30.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。

main()

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

p=a;

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

printf("%\n",p+9);

}

31.十進(jìn)制數(shù)53轉(zhuǎn)換為十六進(jìn)制數(shù)為【】。

32.當(dāng)線性表采用順序存儲結(jié)構(gòu)實現(xiàn)存儲時,其主要特點(diǎn)是______。

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

34.設(shè)a、b、c為int型變量,且a=10、b=5、c=1,則執(zhí)行完以下語句,a的值變?yōu)椤尽俊?/p>

a/=10-(++b)-(c--);

35.軟件測試分為白箱(盒)測試和黑箱(盒)測試。等價類劃分法屬于【】測試。

36.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

38.C語言用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是______、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

39.以下程序通過函數(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(【】);}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=C;c=t;

if(a<c&&b<c)t=b;b=a;a=t

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

}

三、1.選擇題(20題)41.C語言中,凡未指定存儲類別的局部變量的隱含存儲類別是()。

A.自動(auto)B.靜態(tài)(statiC)C.外部(extern)D.寄存器(register)

42.兩個或兩個以上的模塊之間關(guān)聯(lián)的緊密程度稱為()

A.耦合度B.內(nèi)聚度C.復(fù)雜度D.連接度

43.下列程序的輸出結(jié)果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

44.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");}程序的運(yùn)行結(jié)果是

A.1234B.2344C.4332D.1123

45.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結(jié)果是()。

A.7B.6C.8D.無確定值

46.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

47.以下程序的運(yùn)行結(jié)果為______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}

A.10B.9C.8D.11

48.若已包括頭文件<stdio.h>且已有定義staticcharstr[9];,現(xiàn)要使str從鍵盤獲取字符串"Thelady",應(yīng)使用

A.scanf("%s",str)

B.for(i=0;i<9;i++)gethchar(str[i]);

C.gets(str);

D.for(i=0;i<9;i++)scanf("%s",&str[i]);

49.以下程序的輸出結(jié)果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147

50.下面軟件中,屬中應(yīng)用軟件的是()

A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS

51.下列選項中不符合良好程序設(shè)計風(fēng)格的是A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計要保證高耦合、高內(nèi)聚

52.若有定義:inta[2][3];則才a數(shù)組的第i行第j列(假調(diào)i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

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

54.已知p為指針變量,a為數(shù)組名,i為整型變量,下列賦值語句中不正確的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

55.棧和隊列的共同特點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

56.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

57.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}執(zhí)行后輸出結(jié)果是

A.550550B.680680C.580550D.580680

58.若有下列定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

59.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

60.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的運(yùn)行結(jié)果是

A.0B.9C.6D.8

四、選擇題(20題)61.以下敘述中錯誤的是()。

A.一個C程序中可以包含多個不同名的函數(shù)

B.一個C程序只能有一個主函數(shù)

C.C程序在書寫時,有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

62.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下關(guān)于程序段執(zhí)行情況的敘述,正確的是

A)for循環(huán)語句固定執(zhí)行8次

B)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行

63.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

64.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));

A.5B.14C.8D.輸出項不合法,無正常輸出

65.

66.軟件設(shè)計中衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)是()。

A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法

67.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

68.下列函數(shù)的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的長度

B.比較兩字符串的大小

C.將字符串s復(fù)制到字符串t中

D.將字符串s連接到字符串t后

69.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

printf("k=%da=%d\n",k,a);

}

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

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

70.

71.對線性表進(jìn)行二分法檢索,其前提條件是()。A.A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯Γ搓P(guān)鍵碼的檢索頻率排好序

72.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEFGCHI和DBFEGACIH,則該二叉樹的后序遍歷為

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

73.

74.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運(yùn)算包括()。

A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表

75.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

76.

77.

78.設(shè)有定義

79.對下列二叉樹

進(jìn)行中序遍歷的結(jié)果是()。

A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG

80.

設(shè)有以下定義和語句:

charstr[2O]="Program",*P:

p=str:

則以下敘述中正確的是()。

A.*p與stf[0]的值相等

B.str與P的類型完全相同

C.str數(shù)組長度和P所指向的字符串長度相等

D.數(shù)組str中存放的內(nèi)容和指針變量P中存放的內(nèi)容相同

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。

請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)其功能是移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.C

2.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點(diǎn)的集合,對應(yīng)任意一棵非空樹,它具有以下幾點(diǎn)重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點(diǎn)。

②當(dāng)n>1時,其余結(jié)點(diǎn)可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。

因此,本題的正確答案有且只有一個。

3.D解析:本題主要是考查帶參數(shù)的宏定義及其相關(guān)運(yùn)算。本題中宏運(yùn)算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

4.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正確答案是C。

5.C

6.C函數(shù)是指預(yù)先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨(dú)立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨(dú)立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進(jìn)行編譯和執(zhí)行。

7.C解析:外部變量在編譯時由系統(tǒng)分配永久的內(nèi)存空間,所以外部變量的類型不是自動存儲類別。

8.A解析:在C語言中所謂函數(shù)的遞歸是在指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是i

9.A解析:本題考查了函數(shù)的遞歸調(diào)用。在f函數(shù)中,當(dāng)m=7時,程序執(zhí)行“f(--n,&r1);”語句,遞歸調(diào)用f(6,&r1),程序執(zhí)行“r1=n/3;”語句,即r1=\u30006/3=2,然后執(zhí)行“*r=r1;”語句,所以輸出結(jié)果為2。

10.A

11.C解析:數(shù)據(jù)庫是數(shù)據(jù)的集合,其中的數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,它能構(gòu)造復(fù)雜的數(shù)據(jù)結(jié)構(gòu),以建立數(shù)據(jù)之間的內(nèi)在聯(lián)系與復(fù)雜的關(guān)系。

12.Bfun(x+2)表示的是結(jié)構(gòu)體數(shù)組中的第3個元素即{03,"Zhao",l8),而輸出的是name元素,所以答案為B。

13.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

14.C

15.C

16.C

17.D

18.D解析:在C語言所有的運(yùn)算符中,逗號運(yùn)算符的優(yōu)先級最低。C語言中區(qū)分大小寫,所以APH和aph是兩個不同的變量。賦值表達(dá)式a=b表示將b的值付給a,而b本身的值保持不變;通過鍵盤可以向計算機(jī)輸入允許的任何類型的數(shù)據(jù)。選項D)中當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量可以輸入整型數(shù)值和字符,對于實型變量可以輸入實型數(shù)值和整型數(shù)值等。

19.C

20.A選項A中,if語句的語句塊“m--”后面少了分號,不合法,編譯會出錯。其他選項都是正確的。故本題答案為A選項。

解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a(bǔ)、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

22.模式/內(nèi)模式映像模式/內(nèi)模式映像解析:映像即一種對應(yīng)規(guī)則,指出映像雙方如何進(jìn)行轉(zhuǎn)換。數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像與模式/內(nèi)模式映像。

23.選擇選擇解析:在關(guān)系數(shù)據(jù)庫中,選擇運(yùn)算也是一個元運(yùn)算,關(guān)系R通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個關(guān)系。這個關(guān)系是由R中的那些滿足邏輯條件的元組所組成。

24.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。

25.xx解析:函數(shù)的定義形式為:

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求捐變量的Y次方。

26.自頂而下自頂而下

27.continuecontinue解析:continue語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。break語句是終止整個循環(huán)的執(zhí)行,不再進(jìn)行條件判定。

28.程序正確性程序正確性

29.00解析:根據(jù)運(yùn)算符的運(yùn)算順序可知,該表達(dá)式最后運(yùn)算的是與(&&)運(yùn)算,而任何表達(dá)式與“0”進(jìn)行“與”運(yùn)算,結(jié)果都為0。

30.1a61a6解析:對于指針變量的運(yùn)算,就是對地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進(jìn)制輸出的。

31.35

32.邏輯結(jié)構(gòu)中相鄰的結(jié)點(diǎn)在存儲結(jié)構(gòu)中仍相鄰。邏輯結(jié)構(gòu)中相鄰的結(jié)點(diǎn)在存儲結(jié)構(gòu)中仍相鄰。解析:順序存儲結(jié)構(gòu)的主要特點(diǎn)是數(shù)據(jù)元素按線性表的邏輯次序,依次存放在一組地址連續(xù)的存儲單元中。在存儲單元中,各元素的物理位置和邏輯結(jié)構(gòu)中各結(jié)點(diǎn)間的相鄰關(guān)系是一致的。

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

34.3

35.黑箱或黑盒黑箱或黑盒解析:黑箱測試是根據(jù)程序規(guī)格說明所規(guī)定的功能來設(shè)計測試用例,它不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。常用的黑箱測試技術(shù)分為等價類劃分、邊界分析、錯誤猜測以及因果圖等。

36.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個的形式輸出。

37.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

38.順序結(jié)構(gòu)順序結(jié)構(gòu)解析:結(jié)構(gòu)化程序有3種摹本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)(包括if語句和switch語句)和循環(huán)結(jié)構(gòu)(包括for語句、while語句、do…while語句)。

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

40.4599

41.A

42.AA)【解析】耦合度是模塊間互相連接的緊密程度的度量;內(nèi)聚度是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。

43.C

44.C解析:程序中定義了兩個數(shù)組s和c,數(shù)組c中有5個元素,每個元素的初始值為0;數(shù)組s中有12個元素,包含4個“1”,3個“2”,3各“3”,2個“4”。第一個for語句中,用s[i]作為c數(shù)組的下標(biāo),用于統(tǒng)計s[i]中相同數(shù)字的個數(shù),同時將統(tǒng)計的結(jié)果放在以該數(shù)字為下標(biāo)的c數(shù)組中。第二個for語句用于將c數(shù)組中a[1]~a[4]4個元素輸出。

45.A解析:本題定義了一個指向由3個元素組成的一維數(shù)組的指針變量pa,通過賦值讓它指向具有2行3列的數(shù)組a,此時用指針變量pa,表示數(shù)組元素a[i][j]的形式是pa[im][j])。for循環(huán)執(zhí)行了3次;第一次i值為0,執(zhí)行pa[1][0]=pa[1][0]-1,執(zhí)行后a[1][0]的值變?yōu)?;第二次i值為1,執(zhí)行pa=[1][1]=pa[1][1]-1,執(zhí)行后a[1][1]的值為4;第三次i值為2,執(zhí)行pa[1][2]=1,執(zhí)行后a[1][2]的值變?yōu)?。故prinff語句輸入的值為2+4+1=7。所以,A選項為所選。

46.A解析:“%”是求余運(yùn)算符或模運(yùn)算符,“%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項A)中的x是double型數(shù)據(jù)。

47.A解析:程序中的p指向變量x,q被定義為二級指針,即指向指針的指針,其值為指針p的地址,因此,**q即是x,打印結(jié)果為10。

48.C解析:gets(str)是專門用來輸入字符串的函數(shù),可以包含空格,因此只有選項C)正確,其他選項都不正確。注意:通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)。

49.C

50.B

51.D解析:編程風(fēng)格是在不影響性能的前提下,有效地編排和組織程序,以提高可讀性和可維護(hù)性。更直接地說,風(fēng)格就是意味著要按照規(guī)則進(jìn)行編程。這些規(guī)則包括:(1)程序文檔化。就是程序文檔包含恰當(dāng)?shù)臉?biāo)識符、適當(dāng)?shù)淖⒔夂统绦虻囊曈X組織等。(2)數(shù)據(jù)說明。出于閱讀理解和維護(hù)的需要,最好使模塊前的說明語句次序規(guī)范化。此外,為方便查找,在每個說明語句的說明符后,數(shù)據(jù)名應(yīng)按照字典順序排列。(3)功能模塊化。即把源程序代碼按照功能劃分為低耦合、高內(nèi)聚的模塊。(4)注意goto語句的使用。合理使用goto語句可以提高代碼的運(yùn)行效率,但goto語句的使用會破壞程序的結(jié)構(gòu)特性。因此,除非確實需要,否則最好不使用goto語句。因此,本題的正確答案是D。

52.A解析:本題考查了二維數(shù)組元素的引用方法。選項A中a引指向了數(shù)組a的第i+1行,*(a+i)則是第i+1行第0列的地址值,*(a+i)+j指向了數(shù)組a第i+1行,j+1列,*(*(a+i)+j)取到的是數(shù)組a的a[i][j]的元素。

53.AC語言規(guī)定case后面跟的必須是整型常量表達(dá)式。進(jìn)入case后,如果沒有遇到break語句就會一直往下執(zhí)行,后面其他case或default分支的語句也會被執(zhí)行到,直到遇到break,或者執(zhí)行到整個switch語句塊的末尾。題目中給出了三個case語句:case0、case1、case2。當(dāng)x為1時,從case1語句開始執(zhí)行,因為沒有break語句,將一直執(zhí)行到函數(shù)末尾結(jié)束,即執(zhí)行case1、case2兩條語句。執(zhí)行完case1時,a=1,b=0;執(zhí)行完case2時,a=2,b=1。

54.D

55.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種'后進(jìn)先出'的線性表;而隊列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種'先進(jìn)先出'的線性表。模塊之間的耦合程度反映了模塊的獨(dú)立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。

56.B解析:本題考核的知識點(diǎn)是函數(shù)的定義方法。選項B中在說明形參時,省略了第二個參數(shù)的類型,故選項B編譯不能通過。

57.C解析:本題中首先定義了結(jié)構(gòu)體類型STU,該結(jié)構(gòu)體由一個長度為10的字符數(shù)組、兩個整型變量num和Score組成。在主函數(shù)中,定義了一個長度為5的結(jié)構(gòu)體數(shù)組s并賦初值,一個指針數(shù)組p和一個指針變量t,接著將數(shù)組s中各元素的地址依次賦給指針數(shù)組p中的各成員。然后通過兩個for循環(huán)將數(shù)組p按Score的值從小到大的順序排列。因此最后輸出的p[1]->Score的值為550,而數(shù)組s[1].Score的值為580。

58.D解析:本題考查如何引用數(shù)組元素的地址。

選項A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用錯誤;選項B)中,*a+1指的是將數(shù)組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數(shù)組的首地址。

59.D解析:“&”是求址運(yùn)算符,“*”是指變量說明符。選項A)、B)應(yīng)改為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。

60.C解析:函數(shù)intf(intx)是一個遞歸函數(shù)調(diào)用,當(dāng)x的值等于0或1時,函數(shù)值等于3,其他情況下y=x2-f(x-2),所以在主函數(shù)中執(zhí)行語句z=f(3)時,y=3*3-f(3-2)=9-f(1)=9-3=6。

61.C【答案】C

【知識點(diǎn)】C程序的函數(shù)

【解析】C程序必須有且只有一個主函數(shù)main()。一個C程序可以包含多個不重名的子函數(shù)。C程序在書寫時沒有嚴(yán)格的縮進(jìn)要求,語句前的縮進(jìn)隨意。

62.D

63.A選項A中d0后面的語句只執(zhí)行了-次匣結(jié)束了循環(huán);B選項中條件while(1)永遠(yuǎn)成立,所以是死循F;C選項中n的值為10,而循環(huán)體為空語句,所以while(n)永遠(yuǎn)為真,進(jìn)入死循環(huán);D選項中for語句第二個表達(dá)式為空,所1以沒有判別條件,進(jìn)入死循環(huán)。

64.A解析:本題考查用strlen函數(shù)計算字符串長度的方法。該字符串中包含的字符是:\'\\t\'(跳格符)、\'\\'\'(雙引號)、\'\\065\'(ASCII值為八進(jìn)制065,也即+進(jìn)制為51的字符)、\'\\xff\'(ASCII值為+六進(jìn)制ff,也即+進(jìn)制為255的字符)、\'\\n\'(換行符)。

65.D

66.C耦合性與內(nèi)聚性是模塊獨(dú)立與否的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)蒙、低耦合,即減弱模塊之間的耦合性而提高模塊內(nèi)的內(nèi)聚性,這樣有利于提高模塊的獨(dú)立性。

67.D在最壞情況下,快速排序、冒泡排序和直接插入排序需要的比較次數(shù)都為n(n-1)/2,堆排序需要的比較次數(shù)為nlog2n。因此本題正確的答案選D。

68.B在本題中,從題目給出的四個選項我們就可以知道,程序是對兩個字符串進(jìn)行操作。下面將具體分析程序。

程序首先定義兩個字符型的指針變量s和t,從后面的程序中不難看出這兩個指針變量應(yīng)該用來對兩個字符串進(jìn)行操作處理。用循環(huán)來對字符串進(jìn)行處理時,循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結(jié)果值不為0,且兩結(jié)果值相等。很顯然,指針變量s和指針變量t所指向的結(jié)果值不為0,說明兩字符串沒有結(jié)束,只有結(jié)束時才為0,而結(jié)果值相等說明兩字符相等,如果不等,循環(huán)則結(jié)束,此時程序?qū)⒁蠓祷夭坏仍刂g的差值,從差值的正負(fù)關(guān)系我們可以判斷出哪個元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。

69.C\n輸出結(jié)果:k=1a=2

\nk=2a=4

\nk=3a=7

\nk=4a=12

\n

70.A

71.A對線性表進(jìn)行二分法檢索,要求線性表是按順序方式存儲的,并按關(guān)鍵碼值的大小排好序。

72.C本題主要考查二叉樹的遍歷。題目中給出了二叉樹的前序遍歷和中序遍歷結(jié)果,要求其后序遍歷的結(jié)果。

由于二叉樹的前序遍歷為ABDEFGCHI,可以知道這個二叉樹的根結(jié)點(diǎn)是A,根據(jù)二叉樹的中序遍歷為DBFEGACIH,可以知道D、B、F、E、G結(jié)點(diǎn)為二叉樹的左子樹,而C、I、H結(jié)點(diǎn)為二叉樹的右子樹。

然后由前序遍歷序列BDEFG可知,B結(jié)點(diǎn)為左子樹的根結(jié)點(diǎn),由前序遍歷序列CHI可知,C結(jié)點(diǎn)為右子樹的根結(jié)點(diǎn);由中序遍歷序列DBFEG可知,D結(jié)點(diǎn)為B子樹的左子樹,而F、E、G結(jié)點(diǎn)為B子樹的右子樹,由中序遍歷序列CIH可知,I、H序列為C子樹的右子樹。

同理可以推導(dǎo)出,E為B右子樹的根結(jié)點(diǎn),而F為E的左子樹,G為E的右子樹,H為C的右子樹,I為H的左子樹。然后將構(gòu)成的樹

進(jìn)行后序遍歷得到結(jié)果為DFGEBIHCA。因此,本題的答案選C。\r\n\r\n\r\n

73.B

74.B解析:此題為數(shù)據(jù)庫的基本概念,可以對照辦工軟件的電子表格進(jìn)行如下理解:選擇:我們根據(jù)某條件選擇出一行或多行元組(一個元組即為二維表中的一行)。投影:按字段(也稱屬性,比如學(xué)生關(guān)系(學(xué)號,姓名,出生年月,性別),學(xué)號、姓名…都是屬性)選取一列或多列(一個二維表中所有元組在某一列或幾列上截取出來)。連接:2個或2個以上的表連接組成一張新的表,通常有條件連接。比如學(xué)生關(guān)系(學(xué)號,姓名,系號),又有一張系表(系號,系名,主任),2張表可以合并為一張這樣的表(學(xué)號,姓名,系號,系名,主任)。

75.B軟件設(shè)計包括軟件的結(jié)構(gòu)設(shè)計、數(shù)據(jù)接口設(shè)計和過程設(shè)計。其中軟件結(jié)構(gòu)設(shè)計主要包括系統(tǒng)由哪些子系統(tǒng)構(gòu)成,以及這些子系統(tǒng)之間的關(guān)系是怎樣的,并將這些內(nèi)容編寫成文檔;數(shù)據(jù)接口設(shè)計的任務(wù)是為每個子系統(tǒng)設(shè)計其與其他子系統(tǒng)間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統(tǒng)的操作知識就可以使用;過程設(shè)計是指系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。

76.D

77.D

78.A選項A)定義字符數(shù)組str,然后將str賦值給C,c便指向字符串str,符合題意。所以選擇A)。

79.A解析:二叉樹的中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。

80.A

\n本題中的str為一個字符型數(shù)組,P為字符型指針變量,其指向str的首地址,*P的值為strE03中的字符,其類型、長度不同,但字符第一個相同,故答案選擇A。

\n

81.(1)錯誤:y=0;

正確:y=1;

(2)錯誤:d=i=num;

正確:d=num-i;

【解析】由函數(shù)proc()可知,變量y是判斷小于num/2的整數(shù)中是否存在素數(shù)的標(biāo)志,y=1為找到所要的素數(shù),其初始值應(yīng)該為1,因此,“y=0;”應(yīng)改為“y=1;”變量ntim為兩個素數(shù)之和,變量i和d為要求的兩個素數(shù),因此,“d=i-num;”應(yīng)改為“d=num-i;”。

82.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*將下標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1]*/ }}本題要求把下標(biāo)為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后??梢愿鶕?jù)輸入的p值,通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元,即w[j-1]=w[j];。同時將下標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1],也就是通過語句w[n-1]=ch;來實現(xiàn)此操作。2021年河南省駐馬店市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

2.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

3.執(zhí)行下列程序后,輸出的結(jié)果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

a/=S(k+m)/S(k+m);

printf("%d",A);

}

A.1B.4C.9D.0

4.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

5.下列說法不正確的是()。

A.圖的遍歷是從給定的源點(diǎn)出發(fā)每一個頂點(diǎn)僅被訪問一次

B.圖的深度遍歷不適用于有向圖

C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷

D.圖的深度遍歷是一個遞歸過程

6.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨(dú)立的源程序文件

C.C語言編寫的每個函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

7.下列敘述中錯誤的是()。

A.在C語言中,函數(shù)中的自動變量可以賦初值,每調(diào)用一次賦一次初值

B.在C語言中,在調(diào)用函數(shù)時,實參和對應(yīng)形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數(shù)形參的存儲類型是自動(auto)類型的變量

8.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是

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

9.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運(yùn)行后的輸出結(jié)果是A.2B.1C.3D.0

10.關(guān)系R和關(guān)系S的并運(yùn)算是______。

A.由關(guān)系R和關(guān)系S的所有元組合并組成的集合,再刪去重復(fù)的元組

B.由屬于R而不屬于S的所有元組組成的集合

C.由既屬于R又屬于S的元組組成的集合

D.由R和S的元組連接組成的集合

11.數(shù)據(jù)庫是()的集合,它具有統(tǒng)一的結(jié)構(gòu)格式并存放于統(tǒng)一的存儲介質(zhì),可被各個應(yīng)用程序所共享

A.視圖B.消息C.數(shù)據(jù)D.關(guān)系

12.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運(yùn)行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19

13.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

14.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。

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

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

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

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

15.對n個數(shù)進(jìn)行排序,哪種算法,其時間復(fù)雜度在最壞和最好都是O(nlogn)()

A.快速排序B.希爾排序C.堆排序D.選擇排序

16.

17.

18.以下不正確的敘述是A.A.在C程序中,逗號運(yùn)算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在計算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變

D.當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值

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

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

20.設(shè)有定義“intm=1,n=2;”,則以下if語句中,編譯時會產(chǎn)生錯誤信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像和【】。

23.在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為【】。

24.下面程序的輸出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

25.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

26.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計語言寫成程序。

27.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

28.在軟件測試中,動態(tài)測試和靜態(tài)測試手段只能發(fā)現(xiàn)程序中的錯誤,而不能證明程序中不存在錯誤,只有【】證明才有可能證明程序的正確性。

29.若a=l,b=2,則表達(dá)式!(x=a)||y=b)&&0的值是______。

30.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。

main()

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

p=a;

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

printf("%\n",p+9);

}

31.十進(jìn)制數(shù)53轉(zhuǎn)換為十六進(jìn)制數(shù)為【】。

32.當(dāng)線性表采用順序存儲結(jié)構(gòu)實現(xiàn)存儲時,其主要特點(diǎn)是______。

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

34.設(shè)a、b、c為int型變量,且a=10、b=5、c=1,則執(zhí)行完以下語句,a的值變?yōu)椤尽俊?/p>

a/=10-(++b)-(c--);

35.軟件測試分為白箱(盒)測試和黑箱(盒)測試。等價類劃分法屬于【】測試。

36.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

38.C語言用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是______、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

39.以下程序通過函數(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(【】);}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=C;c=t;

if(a<c&&b<c)t=b;b=a;a=t

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

}

三、1.選擇題(20題)41.C語言中,凡未指定存儲類別的局部變量的隱含存儲類別是()。

A.自動(auto)B.靜態(tài)(statiC)C.外部(extern)D.寄存器(register)

42.兩個或兩個以上的模塊之間關(guān)聯(lián)的緊密程度稱為()

A.耦合度B.內(nèi)聚度C.復(fù)雜度D.連接度

43.下列程序的輸出結(jié)果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

44.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");}程序的運(yùn)行結(jié)果是

A.1234B.2344C.4332D.1123

45.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結(jié)果是()。

A.7B.6C.8D.無確定值

46.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達(dá)式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

47.以下程序的運(yùn)行結(jié)果為______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}

A.10B.9C.8D.11

48.若已包括頭文件<stdio.h>且已有定義staticcharstr[9];,現(xiàn)要使str從鍵盤獲取字符串"Thelady",應(yīng)使用

A.scanf("%s",str)

B.for(i=0;i<9;i++)gethchar(str[i]);

C.gets(str);

D.for(i=0;i<9;i++)scanf("%s",&str[i]);

49.以下程序的輸出結(jié)果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147

50.下面軟件中,屬中應(yīng)用軟件的是()

A.UnixB.人事管理系統(tǒng)C.數(shù)據(jù)庫管理理系統(tǒng)D.DOS

51.下列選項中不符合良好程序設(shè)計風(fēng)格的是A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計要保證高耦合、高內(nèi)聚

52.若有定義:inta[2][3];則才a數(shù)組的第i行第j列(假調(diào)i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

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

54.已知p為指針變量,a為數(shù)組名,i為整型變量,下列賦值語句中不正確的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

55.棧和隊列的共同特點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

56.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

57.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}執(zhí)行后輸出結(jié)果是

A.550550B.680680C.580550D.580680

58.若有下列定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

59.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

60.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的運(yùn)行結(jié)果是

A.0B.9C.6D.8

四、選擇題(20題)61.以下敘述中錯誤的是()。

A.一個C程序中可以包含多個不同名的函數(shù)

B.一個C程序只能有一個主函數(shù)

C.C程序在書寫時,有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

62.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下關(guān)于程序段執(zhí)行情況的敘述,正確的是

A)for循環(huán)語句固定執(zhí)行8次

B)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行

63.以下不構(gòu)成無限循環(huán)的語句或語句組是()。

64.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));

A.5B.14C.8D.輸出項不合法,無正常輸出

65.

66.軟件設(shè)計中衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)是()。

A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法

67.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

68.下列函數(shù)的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的長度

B.比較兩字符串的大小

C.將字符串s復(fù)制到字符串t中

D.將字符串s連接到字符串t后

69.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

printf("k=%da=%d\n",k,a);

}

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

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

70.

71.對線性表進(jìn)行二分法檢索,其前提條件是()。A.A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯Γ搓P(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼的檢索頻率排好序

72.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEFGCHI和DBFEGACIH,則該二叉樹的后序遍歷為

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

73.

74.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運(yùn)算包括()。

A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表

75.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

76.

77.

78.設(shè)有定義

79.對下列二叉樹

進(jìn)行中序遍歷的結(jié)果是()。

A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG

80.

設(shè)有以下定義和語句:

charstr[2O]="Program",*P:

p=str:

則以下敘述中正確的是()。

A.*p與stf[0]的值相等

B.str與P的類型完全相同

C.str數(shù)組長度和P所指向的字符串長度相等

D.數(shù)組str中存放的內(nèi)容和指針變量P中存放的內(nèi)容相同

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。

請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序

溫馨提示

  • 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

提交評論