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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.下列語句中,()是錯誤的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

2.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

3.如果定義“班級”關(guān)系如下:班級(班級號,總?cè)霐?shù),所屬學(xué)院,班級學(xué)生)則使它不滿足第一范式的屬性是()。

A.班級號B.班級學(xué)生C.總?cè)霐?shù)D.所屬學(xué)院

4.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

5.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);

}

main()

{inta=4,b=5,c=6;

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

}

程序運行后的輸出結(jié)果是A.3B.6C.8D.12

6.下列運算符中優(yōu)先級最低的算符是()。

A.||B.!=C.<;=D.十

7.若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,下列選項中錯誤的程序是()。

A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}

B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}

C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}

D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}

8.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A.switch(x)

B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}

C.switch(a+B)

D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)

9.將數(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)

10.下面程序段的運行結(jié)果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

11.下面程序段的時間復(fù)雜度為()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

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

A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列是非線性結(jié)構(gòu)

D.循環(huán)隊列是一種邏輯結(jié)構(gòu)

13.有以下程序

#include<stdio.h>

#include<stdlib.h>

main()

{int*a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b

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

}

程序運行后的輸出結(jié)果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

14.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

15.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。

A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/10

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

A.654321

B.65432

C.65453452

D.654534521

17.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

18.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

19.下列定義數(shù)組的語句中,正確的是()。A.#defineN10;intx[N];

B.intN=10;intx[N];

C.int:x[0.10];

D.intx[];.

20.

二、2.填空題(20題)21.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。

22.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。

23.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

24.以下函數(shù)creat用來建立一個帶頭結(jié)點的單向鏈表,新產(chǎn)生的結(jié)點是插在鏈表頭的

末尾。單向鏈表的頭指針作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

25.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

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

27.下列程序的運行結(jié)果是______。

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

28.下面的程序可對指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

29.【】是數(shù)據(jù)庫設(shè)計的核心。

30.以下函數(shù)sstrcat的功能是實現(xiàn)字符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:,所指字符串為abed,t所指字符串為efgh,調(diào)用函數(shù)sstrcat后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

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

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

32.以下程序的輸出結(jié)果是【】。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

33.以下程序的輸出結(jié)果是【】。

#defineMCNA(m)2*m

#defineMCNB(n,m)2*MCRA(n)+m

#definef(x)(x*x)

main()

{inti=2,j=3;

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

}

34.以下程序的運行結(jié)果是______。

#include<string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p-&d;

d=a;

if{strcmp(a.nalne,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%ld%s\n",d.sno,p>name};

}

35.以下程序的輸出結(jié)果是【】。

main()

{unsignedshorta=65536;intb;

printf("%d\n",b=A);

}

36.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

37.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

38.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。

39.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

40.以下函數(shù)將b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(charaC),charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;)

return(num);

}

三、1.選擇題(20題)41.若有如下程序;main(){chara[]="china\0name\0";printf("%d,",strlen(A));printf("%d\n",sizeof(A));}則程序運行后的輸出結(jié)果是()

A.5,11B.5,12C.11,11D.12,12

42.請選出以下程序的輸出結(jié)果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

43.有以下程序: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.無確定值

44.有以下程序:#include<stdio.h>voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-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,

45.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。

A.線性表B.隊列C.樹D.棧

46.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下。main(){intn,k;floatscore;sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf("%f",&score);sum+=score;}ave=sum/4.0;printf('NO%d:%f\n",n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是()。

A.sum=0.0;

B.sum+=score;

C.ave=sun/4.0;

D.printf("NO%d:%f\n",n,ave);

47.若函數(shù)調(diào)用時,參數(shù)為基本數(shù)據(jù)類型的變量,下列敘述中正確的是()。

A.實參與其對應(yīng)的形參共占存儲單元

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

C.實參與其對應(yīng)的形參分別占用不同的存儲單元

D.實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元

48.有以下程序#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=l;i<5;i++)printf("%d",c[i]);printf("\n");}程序的運行結(jié)果是

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

49.在下列選項中,沒有構(gòu)成死循環(huán)的是()。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

50.下列二維數(shù)組初始化語句中,不正確的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

51.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

52.下列數(shù)組說明中,正確的是______。

A.intarray[][4];

B.intarray[][];

C.intmarray[][][5];

D.intarray[3][];

53.有以下程序:main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。

A.-1B.-3C.-5D.0

54.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()

A.冒泡排序為n(n-1)/2B.簡單插入排序為nC.希爾排序為nD.快速排序為n/2

55.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

57.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。

A.235B.235C.2356D.2356

58.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

59.若有以下定義語句:char*sl="12345",*s2="1234";printf("%d"n",strlen(strcpy(s1,s2)));則輸出結(jié)果是()

A.4B.5C.9D.10

60.在不同進(jìn)制的四個數(shù)中,最小的一個數(shù)是()

A.(11011001)2B.(75)8C.(37)10D.(2A)16

四、選擇題(20題)61.以下程序的運行結(jié)果是()。

#include<stdio.h>

main{inta=1,b=2,c=3,x;

x=(a^b)&c;printf("%d\n",x);}

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

62.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

63.若有以下的說明和語句,則在執(zhí)行for語句后,’(*(pt+1)+2)表示的數(shù)組元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

64.

65.若有定義:char*st=”howareyou”;,下列程序段中正確的是()。

A.

B.

C.

D.

66.

67.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()A.21,43B.43,21C.43,00D.21,00

68.

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

#defineM(x,y,z)x*y+z

main()

{inta=l,b=2,c=3;

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

}

A.19B.17C.15D.12

69.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為

A.12B.10C.11D.編譯出錯

70.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下敘述中正確的是()。A.此while語句將無限循環(huán)

B.getchar()不可以出現(xiàn)在while語句的條件表達(dá)式中

C.當(dāng)執(zhí)行此while語句時,只有按回車鍵程序才能繼續(xù)執(zhí)行

D.當(dāng)執(zhí)行此while語句時,按任意鍵程序就能繼續(xù)執(zhí)行

71.軟件詳細(xì)設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

72.

73.若在定義語句:

74.

75.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

76.有以下程序:

當(dāng)執(zhí)行程序時從鍵盤上輸入HelloBeijing<;回車>;,則程序運行后的輸出結(jié)果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

77.如已定義X和Y為double類型,則表達(dá)式X=1,y=x+5/2的值是()。

A.2B.3.0C.3D.3.5

78.若變量x、Y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。

A.++x,y=x-B.x+1=yC.x=x+10=x+yD.double(x/10)

79.

80.有以下程序:

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

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是求斐波那契數(shù)列中大于t的最小的數(shù),結(jié)果由函數(shù)返回。斐波那契數(shù)列F(n)的定義為F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如,當(dāng)t=1000時,函數(shù)值為1597。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){}main(){intn;n=1000;printf(“n=%d,f=%d\n”,n,fun(n));}

參考答案

1.C

2.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

3.B對于關(guān)系模式,若其中的每個屬性都已不能再分為簡單項,則它屬于第一范式模式。題目中“班級”關(guān)系的“班級學(xué)生”屬性,還可以進(jìn)行再分,如學(xué)號、姓名、性別、出生日期等,因此不滿足第一范式。本題答案為B選項。

4.C解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。

5.B

6.AC語言中規(guī)定運算符的優(yōu)先順序:一元算術(shù)運算符一>二元算術(shù)運算符一>關(guān)系運算符一>邏輯運算符一>賦值運算符,A項中為邏輯運算符,B項和c項都為關(guān)系運算符,D項為一元運算符。因此最低的是A項。

7.A在調(diào)用函數(shù)時,應(yīng)對其進(jìn)行說明。A選項中,調(diào)用時沒有對函數(shù)進(jìn)行說明。B、C選項中,被調(diào)用函數(shù)在主調(diào)函數(shù)之前定義,不用說明。D選項中,在主函數(shù)中對被調(diào)用函數(shù)的返回值類型進(jìn)行了說明。故本題答案為A選項。

8.C

9.B

10.B解析:考查指向字符串的指針變量。在該題中,指針變量p指向的應(yīng)該是該字符串中的首地址,p+3指向的是字符串結(jié)束標(biāo)志'\\0'的地址,因而*(p+3)的值為0。

11.A

12.B本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應(yīng)該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。

13.A解析:本題中,首先創(chuàng)建開辟一個動態(tài)內(nèi)存,然后將地址分別存入指針a、b、c中,即a、b、c都指向相同的變量。分別給a、b、C所指的變量賦值,最終a、b、c所指的變量中的值為3,最后打印a、b、c所指的變量的值,即3,3,3。所以選A。

14.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。

15.B不能將變量賦給表達(dá)式,故A、C選項錯誤。D選項中強(qiáng)制類型轉(zhuǎn)換表達(dá)式應(yīng)寫成“(double)x/10”。故本題答案為B選項。

16.C程序首先定義整型變量a和b,a的初值為123456。接著通過while循環(huán),判斷a的值是否為0,若不為0,則執(zhí)行循環(huán)體。每次循環(huán)將a當(dāng)前值的個位數(shù)字(a%10)賦給b,a自身除以10。再通過switch語句判斷b的值執(zhí)行對應(yīng)分支語句。所以對應(yīng)a的每個個位數(shù),b的取值為6,5,4,3,2,1。當(dāng)b取值為6時,執(zhí)行default,輸出6,接著繼續(xù)執(zhí)行case1,通過break退出switch。執(zhí)行下一次循環(huán),當(dāng)b取值為5時,執(zhí)行case5輸出5。執(zhí)行下一次循環(huán),當(dāng)b取值為4時,執(zhí)行case4輸出4,繼續(xù)執(zhí)行case5輸出5。接著執(zhí)行下一次循環(huán),當(dāng)b取值為3時,執(zhí)行case3輸出3,執(zhí)行case4輸出4,執(zhí)行case5輸出5;當(dāng)b取值為2時,執(zhí)行case2輸出2,通過break退出switch;當(dāng)b取值為1時,執(zhí)行break,此時a的取值為0,循環(huán)終止。綜上,程序輸出結(jié)果為:65453452。本題答案為C選項。

17.D

18.AB選項中“switch((int)x);”語句中不應(yīng)該有最后的分號。switch(expr1)中的expr1不能用浮點類型或long類型,也不能為一個字符串,所以C選項錯誤。case后面必須為常量表達(dá)式,所以D選項錯誤。故本題答案為A選項。

19.A[解析]數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。B)中N是變量,不能用變量定義數(shù)組長度。C)選項中數(shù)組長度是非法的一串?dāng)?shù)字。定義數(shù)組時必須為其指明長度,D)選項中數(shù)組長度為空,所以非法。\u3000\u3000

20.D

21.11解析:本題考查兩個知識點:一是x/y的值為整型,即為0;二是數(shù)1是double類型。

22.空間空間解析:算法的復(fù)雜度主要包括時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量。一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

23.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

24.strcurlist*strucrlist*return(h)

25.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。

26.完整性控制完整性控制

27.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時,j=3,i=5。因為switch(3),所以執(zhí)行case3,調(diào)用P(a[--i])=P(a[4])=P(5),輸出5;第二次循環(huán)時,j=2,i=4,因為switch(2),所以執(zhí)行case2,調(diào)用P(a[i++])-P(a[4])=P(5),輸出5,之后i自加等于5。

28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

29.數(shù)據(jù)模型數(shù)據(jù)模型

30.*t*t解析:程序中,(a+n)代表字符串s最后一個字符后的,'\\0',根據(jù)題意,'\\0'所在位置應(yīng)該賦值為字符串t的第一個字符,字符中t的其他字符根據(jù)循環(huán),依次賦值到,所指字符串的尾部,所以[14]應(yīng)填:*t。

31.32233,2,2,3解析:主函數(shù)中首先定義了整型變量x和y,并分別給它們賦初值為2和3,接著調(diào)用fun()函數(shù),fun()函數(shù)把實參x和y的值傳給形式參數(shù)x和y,實參和形參不再有聯(lián)系.在fun()函數(shù)中通過運算使x和y的值交換過來,所以fun()函數(shù)中的輸出結(jié)果是“3,2”。fun()函數(shù)調(diào)用返回輸出x和y依舊是原來的x和y,為“2,3”原因是變量作為形參傳值的,對形參的修改并不影響對應(yīng)的實參。所以最后輸出為3,2,2,3。

32.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán),所以程序輸出852。

33.1616解析:本題定義了兩個宏MCRA(m)和MCRB(n,m),展開宏MCRB(n,m),得到:MCRB(j,MCRA(i)=2*MCRA(j)+MCRA(i)=2×2×j+2×i=4×3+2×2=12+4=16,因此printf函數(shù)的輸出結(jié)果為16。

34.2002Shangxian2002Shangxian解析:本題考核的知識點是結(jié)構(gòu)體類型的定義、賦初值以及字符串的比較。本題中首先定義一個結(jié)構(gòu)體類型STU,鎮(zhèn)結(jié)構(gòu)體由一個長度為10的字符型數(shù)組、一個long型變量和一個float型變量組成。接著在主函數(shù)中用STU定義了4個結(jié)構(gòu)體變量a、b、c、d,并且給a、b、c賦初值,然后定義?一個結(jié)構(gòu)體指針p,并讓它指向變量d。然后讓將變量a的值賦給變量d,接著通過兩個if語句比較結(jié)構(gòu)體變量a、b、c的成員name大小。第一個訂語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量較大的那個賦給結(jié)構(gòu)體變量d。比較通過函數(shù)strcmp實現(xiàn)。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。程序中第一個if語句strcmp(,)>0為真,故將b的值賦給d;第二個if語句strcmp()>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此輸出d.sn0和p->name的值為2002Shangxian

35.00解析:對于一個unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實際為0。

36.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結(jié)果是a=14。

37.存儲結(jié)構(gòu)

38.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點。第6層的結(jié)點數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點最多數(shù)”和“某一層的結(jié)點最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點。

39.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。

40.\0n++

41.B

42.B解析:sub()函數(shù)的作用是將形參y和x的差賦給了z指向的那個內(nèi)存地址,所以在sub(10,5,&A),10和5屆于值傳遞,a是屬于地址傳遞,也就是a與z指向了同一個存儲單元,在執(zhí)行函數(shù)后,a的值隨*z變化,所以此次函數(shù)被調(diào)用后,a的值為y-x=-5,同理可知,在sub(7,a,&B)后,b的值發(fā)生變化,其值為-5-7=-12,在sub(a,b,&c)后,c的值發(fā)生變化,其值為-12-(-5)=-7。

43.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選項為所選。

44.A解析:f函數(shù)的功能是通過遞歸調(diào)用實現(xiàn)數(shù)組中左右部分相應(yīng)位置數(shù)據(jù)的交換,即數(shù)組中第一個元素與最后一個元素調(diào)換位置,第二個元素與倒數(shù)第二個元素調(diào)換位置,以此類推。

45.C解析:線性結(jié)構(gòu),是指數(shù)據(jù)元素只有一個直接前件元素和直接后件元素。線性表是線性結(jié)構(gòu)。棧和隊列是指對插入和刪除操作有特殊要求的線性表,樹是非線性結(jié)構(gòu)。

46.A解析:本題程序中使用了兩層for循環(huán),外層循環(huán)的作用是控制人數(shù),循環(huán)一次是求一個人的成績和,然后除以4得到平均成績。每個人的成績總和一開始時都必須清0,否則就會出現(xiàn)后面人的總成績越來越大?!皊um=O.O;”應(yīng)在外層循環(huán)中。選項A正確。

47.C解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)的形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在函數(shù)調(diào)用時,實參和其所對應(yīng)的形參分別占用不同的存儲單元,彼此之間不影響。

48.C解析:在for(i=0;i<12;i++)c[s[i]]++中,數(shù)組元素s[i]的值作為數(shù)組c的下標(biāo),當(dāng)退出循環(huán)時,數(shù)組c的4個元素的值分別為4、3、3、2。

49.D解析:選項A)的循環(huán)表達(dá)式條件永久為1,由于小于100的數(shù)與100取余不超過99,所以在循環(huán)體內(nèi)表達(dá)式i%100+1的值永遠(yuǎn)不大于100,break語句永遠(yuǎn)不會被執(zhí)行,所以是死循環(huán);選項B)的括號內(nèi)沒有能使循環(huán)終止的條件,是死循環(huán);選項C)中先執(zhí)行k++,使k=10001,陷入死循環(huán);選項D)中的s從36開始,每循環(huán)一次就減小1,直到s為0,循環(huán)結(jié)束,不會構(gòu)成死循環(huán)。

50.D解析:在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達(dá)式,而不能省略第2個方括號中的常量表達(dá)式;賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。

在選項D)賦值表達(dá)式中,對每一維的元素賦初值應(yīng)用{},而不是()。

51.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

52.A

53.B解析:根據(jù)題目要求,最后要使輸出的s值為2,在程序中改變s的值的語句只有循環(huán)體中的s+=1;語句,而初始s的值為0,顯然要使s的值變?yōu)?,該語句必須執(zhí)行兩次,即do-while循環(huán)中的循環(huán)體要執(zhí)行兩次,而在do-while中,首先不執(zhí)行條件而執(zhí)行do后面的循環(huán)體語句,然后再判斷while循環(huán)條件。所以不管循環(huán)判斷條件是否為真s+=1;語句至少執(zhí)行一次,根據(jù)分析,只需要while后面括號的循環(huán)判斷表達(dá)式的值為真成立一次且只能為真一次,將4個選項中的內(nèi)容依次代入該程序中不難得到只有n=-3剛好使循環(huán)判斷條件a!=n為真一次。故4個選項中選項B符合題意。

54.AA)【解析】在最壞情況下,冒泡排序所需要的比較次數(shù)為n(n-1)/2;簡單插入排序所需要的比較次數(shù)為n(n-1)/2;希爾排序所需要的比較次數(shù)為O(n1.5);堆排序所需要的比較次數(shù)為O(nlog2n)。

55.CC。【解析】結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

56.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強(qiáng)行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。

57.A解析:do-while語句的特點是先執(zhí)行循環(huán)體,然后再判斷循環(huán)條件是否成立,當(dāng)循環(huán)條件的值為0時循環(huán)結(jié)束。本題中執(zhí)行switch語句,尋找與5匹配的case5分支,沒有尋找到則執(zhí)行default后的語句,n=0,k的值變?yōu)?,繼續(xù)執(zhí)行switch語句,尋找與4匹配的case4分支,找到后開始執(zhí)行其后的語句“n+=2;k--;”,n的值為2,k的值變?yōu)?,遇到break語句跳出該switch語句體。執(zhí)行print語句輸出2;此時n=2,k=3依舊滿足do-while循環(huán)條件,將用同樣的方式再次執(zhí)行switch語句,直到n=5時不再滿足do-while循環(huán)條件退出所有的循環(huán)。

58.A解析:本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②C語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

選項A)中一個單引號內(nèi)放了若干個字符是錯誤的:選項B)和選項D)選項中將一個字符串賦值給一個字符數(shù)組是允許的。

59.A

60.C

61.D

62.C數(shù)據(jù)庫是對數(shù)據(jù)進(jìn)行操作和管理的,可以看成是長期存儲在計算機(jī)內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。數(shù)據(jù)庫可以被直觀地理解為存放數(shù)據(jù)的倉庫,數(shù)據(jù)庫可以對大量數(shù)據(jù)進(jìn)行管理和應(yīng)用。一個應(yīng)用數(shù)據(jù)庫的主要目的就是要實現(xiàn)數(shù)據(jù)的共享,能使應(yīng)用數(shù)據(jù)庫的數(shù)據(jù)被大量用戶使用。

63.C從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

64.D

65.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)其中,需要注意的是,字符數(shù)組l的長度不應(yīng)小于字符串2的長度,”字符數(shù)組1”必須寫成數(shù)組名形式,如(strl),”字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

66.D

67.As是一個公用體,d的值分別與ch中的兩個元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此輸出的結(jié)果為21,43。

68.D

\nM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

\n

69.Cp=&a表達(dá)式的含義是將變量a的地址賦給指針變量p;a=*p+b表達(dá)式的含義是將指針變量p所存地址對應(yīng)的值與b的和賦給a。

70.C主要是考查while和getchar函數(shù),getchar函數(shù)是輸入字符函數(shù),while是循環(huán)語句,所以當(dāng)輸入的字符為換行符時將執(zhí)行。

71.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計時使用的程序流程圖。

72.B

73.Ascanf中參數(shù)列表,需為地址,A)符合題意。所以選擇A)。

74.D

75.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。故答案為A選項。

76.C主程序讀取整個字符串存于s中,調(diào)用fun函數(shù)。字符指針c指向數(shù)組S。函數(shù)fun的功能是把指針C所指向的字符數(shù)組中的所有小寫字符轉(zhuǎn)換為大寫。囂cts函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結(jié)束。如果·c為小寫字符,則}C={C一32(轉(zhuǎn)大寫)。因此C選項正確。

77.B題目中定義變量x和y為雙精度double類型,根據(jù)給定算數(shù)表達(dá)式的優(yōu)先級應(yīng)先計算5/2,結(jié)果為2,將值代入后,由x和y的數(shù)據(jù)類型得出y為3.0。整個逗號表達(dá)式的值為后面y=x+5/2的值,所以選擇B)。

78.A賦值表達(dá)式左邊必須是一個變量,而選項B)、c)中賦值號左邊都是表達(dá)式,選項D)進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,應(yīng)寫為(double)x/10。

79.D

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.intfun(intt){intf0=0,f1=1,f;do{/*根據(jù)斐波那契數(shù)列的定義求數(shù)值*/f=f0+f1;f0=f1;f1=f;}while(f<t);/*如果求的數(shù)值小于t則繼續(xù)*/</t);returnf;}根據(jù)斐波那契數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果由兩個數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把f看成前兩項之和,而f0始終代表第n-2項,f1代表第n-1項。退出循環(huán)時得到的數(shù)f,就是大于指定數(shù)的最小的數(shù)。2021年湖北省黃石市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列語句中,()是錯誤的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

2.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

3.如果定義“班級”關(guān)系如下:班級(班級號,總?cè)霐?shù),所屬學(xué)院,班級學(xué)生)則使它不滿足第一范式的屬性是()。

A.班級號B.班級學(xué)生C.總?cè)霐?shù)D.所屬學(xué)院

4.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

5.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);

}

main()

{inta=4,b=5,c=6;

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

}

程序運行后的輸出結(jié)果是A.3B.6C.8D.12

6.下列運算符中優(yōu)先級最低的算符是()。

A.||B.!=C.<;=D.十

7.若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,下列選項中錯誤的程序是()。

A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}

B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}

C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}

D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}

8.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A.switch(x)

B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}

C.switch(a+B)

D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)

9.將數(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)

10.下面程序段的運行結(jié)果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

11.下面程序段的時間復(fù)雜度為()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

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

A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列是非線性結(jié)構(gòu)

D.循環(huán)隊列是一種邏輯結(jié)構(gòu)

13.有以下程序

#include<stdio.h>

#include<stdlib.h>

main()

{int*a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b

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

}

程序運行后的輸出結(jié)果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

14.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

15.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。

A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/10

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

A.654321

B.65432

C.65453452

D.654534521

17.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

18.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

19.下列定義數(shù)組的語句中,正確的是()。A.#defineN10;intx[N];

B.intN=10;intx[N];

C.int:x[0.10];

D.intx[];.

20.

二、2.填空題(20題)21.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。

22.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。

23.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

24.以下函數(shù)creat用來建立一個帶頭結(jié)點的單向鏈表,新產(chǎn)生的結(jié)點是插在鏈表頭的

末尾。單向鏈表的頭指針作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

25.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

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

27.下列程序的運行結(jié)果是______。

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

28.下面的程序可對指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

29.【】是數(shù)據(jù)庫設(shè)計的核心。

30.以下函數(shù)sstrcat的功能是實現(xiàn)字符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:,所指字符串為abed,t所指字符串為efgh,調(diào)用函數(shù)sstrcat后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

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

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

32.以下程序的輸出結(jié)果是【】。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

33.以下程序的輸出結(jié)果是【】。

#defineMCNA(m)2*m

#defineMCNB(n,m)2*MCRA(n)+m

#definef(x)(x*x)

main()

{inti=2,j=3;

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

}

34.以下程序的運行結(jié)果是______。

#include<string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p-&d;

d=a;

if{strcmp(a.nalne,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%ld%s\n",d.sno,p>name};

}

35.以下程序的輸出結(jié)果是【】。

main()

{unsignedshorta=65536;intb;

printf("%d\n",b=A);

}

36.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

37.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

38.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。

39.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

40.以下函數(shù)將b字符串連接到a字符串的后面,并返回a中新字符串的長度。

strcen(charaC),charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;)

return(num);

}

三、1.選擇題(20題)41.若有如下程序;main(){chara[]="china\0name\0";printf("%d,",strlen(A));printf("%d\n",sizeof(A));}則程序運行后的輸出結(jié)果是()

A.5,11B.5,12C.11,11D.12,12

42.請選出以下程序的輸出結(jié)果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

43.有以下程序: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.無確定值

44.有以下程序:#include<stdio.h>voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-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,

45.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。

A.線性表B.隊列C.樹D.棧

46.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下。main(){intn,k;floatscore;sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf("%f",&score);sum+=score;}ave=sum/4.0;printf('NO%d:%f\n",n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是()。

A.sum=0.0;

B.sum+=score;

C.ave=sun/4.0;

D.printf("NO%d:%f\n",n,ave);

47.若函數(shù)調(diào)用時,參數(shù)為基本數(shù)據(jù)類型的變量,下列敘述中正確的是()。

A.實參與其對應(yīng)的形參共占存儲單元

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

C.實參與其對應(yīng)的形參分別占用不同的存儲單元

D.實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元

48.有以下程序#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=l;i<5;i++)printf("%d",c[i]);printf("\n");}程序的運行結(jié)果是

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

49.在下列選項中,沒有構(gòu)成死循環(huán)的是()。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

50.下列二維數(shù)組初始化語句中,不正確的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

51.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

52.下列數(shù)組說明中,正確的是______。

A.intarray[][4];

B.intarray[][];

C.intmarray[][][5];

D.intarray[3][];

53.有以下程序:main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。

A.-1B.-3C.-5D.0

54.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()

A.冒泡排序為n(n-1)/2B.簡單插入排序為nC.希爾排序為nD.快速排序為n/2

55.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

57.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。

A.235B.235C.2356D.2356

58.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

59.若有以下定義語句:char*sl="12345",*s2="1234";printf("%d"n",strlen(strcpy(s1,s2)));則輸出結(jié)果是()

A.4B.5C.9D.10

60.在不同進(jìn)制的四個數(shù)中,最小的一個數(shù)是()

A.(11011001)2B.(75)8C.(37)10D.(2A)16

四、選擇題(20題)61.以下程序的運行結(jié)果是()。

#include<stdio.h>

main{inta=1,b=2,c=3,x;

x=(a^b)&c;printf("%d\n",x);}

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

62.應(yīng)用數(shù)據(jù)庫的主要目的是A.A.解決數(shù)據(jù)保密問題

B.解決數(shù)據(jù)完整性問題

C.解決數(shù)據(jù)共享問題

D.解決數(shù)據(jù)量大的問題

63.若有以下的說明和語句,則在執(zhí)行for語句后,’(*(pt+1)+2)表示的數(shù)組元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]

溫馨提示

  • 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

提交評論