2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第1頁
2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第2頁
2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第3頁
2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第4頁
2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年河南省開封市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題二卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.C語言的邏輯表達(dá)式在特定情況下會(huì)產(chǎn)生“短路”現(xiàn)象。若有邏輯表達(dá)式“x++&&y++,”則以下敘述中正確的是()。

A.若x的值為0,則“y++”操作被“短路”,y值不變

B.若x的值為1,則“y++”操作被“短路”,y值不變

C.若y的值為0,則“&&”運(yùn)算被“短路”,y值不變

D.若y或x的值為0,則表達(dá)式值為0,“x++”和“y++”均不執(zhí)行

2.鏈表不具備的特點(diǎn)是()。

A.可隨機(jī)訪問任一結(jié)點(diǎn)B.插入刪除不需要移動(dòng)元素C.不必事先估計(jì)存儲(chǔ)空間D.所需空間與其長度成正比

3.如果某圖的鄰接矩陣是對(duì)角線元素均為零的上三角矩陣,則此圖是_______

A.有向完全圖B.連通圖C.強(qiáng)連通圖D.有向無環(huán)圖

4.以下關(guān)于C語言文件系統(tǒng)的敘述中正確的是()。

A.fprintf與fwrite函數(shù)功能相同

B.文件以“r”方式打開后,可以存儲(chǔ)文本類型的數(shù)據(jù)

C.fscanf與fread函數(shù)功能相同

D.以“w”或“wb”方式打開的文件,不可以從中讀取數(shù)據(jù)

5.在Windows環(huán)境下,單擊當(dāng)前窗口中的按鈕“”,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺(tái)運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.終止當(dāng)前應(yīng)用程序的運(yùn)行

D.退出Windows后重新啟動(dòng)計(jì)算機(jī)

6.設(shè)有定義“char*c;”,以下選項(xiàng)中能夠使c正確指向一個(gè)字符串的是()。

A.charstr[]=“string”;c=str;

B.scanf(“%s”,c);

C.c=getchar();

D.*c=“string”;

7.對(duì)線性表進(jìn)行折半查找最方便的存儲(chǔ)結(jié)構(gòu)是()。

A.順序表B.有序順序表C.鏈表D.有序鏈表

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

A.C語言函數(shù)可以嵌套調(diào)用,例如:fim(fun(X))

B.C語言程序是由過程和函數(shù)組成的

C.C語言函數(shù)不可以單獨(dú)編譯

D.C語言中除了main函數(shù)外,其他函數(shù)不可作為單獨(dú)文件形式存在

9.對(duì)含有16個(gè)元素的有序表進(jìn)行二分查找,關(guān)鍵字比較次數(shù)最多是()

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

10.算法的空間復(fù)雜度是指()。

A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間

B.算法所處理的數(shù)據(jù)量

C.算法程序中的語句或指令條數(shù)

D.算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)

11.

12.在Windows環(huán)境下,單擊當(dāng)前應(yīng)用程序窗口中的“關(guān)閉”按鈕,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺(tái)運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.退出Windows后重新啟動(dòng)計(jì)算機(jī)

D.終止當(dāng)前應(yīng)用程序的運(yùn)行

13.語句“printf("akbre"\'hi\'y\\\bou\n")”;的輸出結(jié)果是()。

A.akbre\'hi\'y'\\\bou

B.a\bre\'hi\\y\bou

C.re'hi'you

D.abre'hi'y\bou

14.在下面的一維數(shù)組定義中,哪一個(gè)有語法錯(cuò)誤()。A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];

15.對(duì)于n個(gè)結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn)),需要指針單元的個(gè)數(shù)至少為______。

A.n-1B.nC.n+1D.2n

16.

17.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++printf("%d\n",sum);)執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9

18.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}

A.66B.98C.bD.B

19.if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

20.若有定義語句“inta,b;doubleX;”,則下列選項(xiàng)中沒有錯(cuò)誤的是()。

A.switch(X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

B.switch((int)x/2.O){case0:a++;break;casel:b++;break;default:a++;b++;}

C.switch((int)X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

D.switch((int)(x)%2){case0.0:a++;break;casel.0:b++;break;default:a++;b++;}

二、2.填空題(20題)21.若a=1,b=2,c=3,d=4;則條件表達(dá)式a>b?a:c<d?c:d的結(jié)果為()。

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

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

24.已知字符'A'的ASCII碼值為65,以下語句的輸出結(jié)果是【】。

charch='B';

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

25.軟件是程序、數(shù)據(jù)和【】的集合。

26.若有函數(shù)max(a,b),為了讓函數(shù)指針變量p指向函數(shù)max,當(dāng)調(diào)用該函數(shù)時(shí),正確的賦值方法是

27.有以下說明定義和語句,可用a.day引用結(jié)構(gòu)體成員day,寫出引用結(jié)構(gòu)體成員day的其他兩種形式【】、【】。

struct{intday;charmouth;intyear;}a,*b;b=&a;

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

29.在面向?qū)ο蠓椒ㄖ?,?duì)象之間進(jìn)行通信的構(gòu)造稱為()。

30.數(shù)據(jù)庫恢復(fù)是將數(shù)據(jù)庫從______狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。

31.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級(jí)模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

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

main()

{inti;

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

{if(i>4)

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

break;}

printf("%d\n",i++);}}

33.若輸入12、3、2、5、7,則以下程序的運(yùn)行結(jié)果為【】。

intmax,min;

voidmax_min_value();

main()

{inti,number[5];

printf("輸入5個(gè)整數(shù);\n");

for(i=0;i<5;i++)scanf("%d",&number[i]);

maxminvalue(number,5);

printf("max=%d,min=%d\n",max,min);

getch();

}

voidmax_min_value(array,n)

intarray[],n;

{int*p;

max=min=*array;

for(p=array+1;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

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

35.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

36.下面程序的運(yùn)行結(jié)果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

mam()

{

intil,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

37.設(shè)有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

38.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增加、刪除和修改四種操作。

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

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

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

}

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

三、1.選擇題(20題)41.語句:printf("%d\n",12&012);的輸出結(jié)果是()。

A.12B.8C.6D.12

42.有以下程序:main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

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

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

44.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);ptintf("%s%s\n",p,q);}若從鍵盤輸入abcdef<回車>,則輸出的結(jié)果是()。

A.defdefB.abcdefC.abcdD.dd

45.下面能正確進(jìn)行字符串賦值操作的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",&s);

46.

對(duì)兩個(gè)數(shù)組a和b進(jìn)行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

則下列敘述正確的是()。

A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串

47.從工程管理角度,軟件設(shè)計(jì)一般分為兩步完成,它們是()。

A.概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)B.數(shù)據(jù)設(shè)計(jì)與接口設(shè)計(jì)C.軟件結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)D.過程設(shè)計(jì)與數(shù)據(jù)設(shè)計(jì)

48.若說明int*p,n;則通過語句scanf能夠正確讀入數(shù)據(jù)的程序段是

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

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

C.scanf("%d",n);

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

49.對(duì)下述程序的判斷中,正確的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循環(huán)接收字符串并輸出,直到接收字符串"End"為止

B.此程序循環(huán)接收字符串,接收到字符串"End"則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串"End"為止,但因?yàn)榇a有錯(cuò)誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串"End"為止,輸出連接在一起的字符串

50.執(zhí)行下列語句的結(jié)果為______。i=3;printf("%d,",++i);printf("%d",i++);

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

51.下面關(guān)于對(duì)象概念的描述中,錯(cuò)誤的是

A.對(duì)象就是C語言中的結(jié)構(gòu)體變量

B.對(duì)象代表著正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體

C.對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體

D.對(duì)象之間的信息傳遞是通過消息進(jìn)行的

52.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

53.在C語言中,退格符是

A.\nB.\tC.\fD.\b

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

main()

{inti;

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

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

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

A.159B.753C.357D.591

55.要求以下程序的功能是計(jì)算s=1+1/2+1/3+…+1/10main(){intn;floats;s=1.0;for(n=1O;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序運(yùn)行后輸出結(jié)果錯(cuò)誤,導(dǎo)致錯(cuò)誤結(jié)果的程序行是()。

A.s=1.0;

B.for(n=1O;n>l;n--)

C.s=s+1/n;

D.printf("%6.4f\n",s);

56.以下數(shù)組定義中不正確的是_______。

A.inta[2][3];

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

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

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

A.1123581321

B.1122551010

C.1258981321

D.0112451521

58.下列程序的輸出結(jié)果為______。main(){unsignedinta=65535;intb=-2;printf("\na=%d,%u;b=%d,%u,,a,a,b,b);}

A.-1,65535;-2,65534

B.65535,65535;-2,65534

C.65535,65535;65534,65534

D.-1,65535;65534,65534

59.若有"doublea;",則正確的輸入語句是()。

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

B.scanf("%f",&a);

C.scanf("%lf",&a)

D.scanf("%le",&a);

60.設(shè)變量x和y均已正確定義并賦值。下列if語句中,在編譯時(shí)將產(chǎn)生錯(cuò)誤信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--elsey++;

D.if(y<0){;}elsex++;

四、選擇題(20題)61.有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的輸出結(jié)果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx

62.設(shè)有定義:charp[]={1,2,3),*q=p;,以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

63.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點(diǎn)的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點(diǎn),指針變量s總是作為指針指向鏈表的第一個(gè)結(jié)點(diǎn)。

若有以下程序段:

該程序段實(shí)現(xiàn)的功能是()。

A.刪除尾結(jié)點(diǎn)B.尾結(jié)點(diǎn)成為首結(jié)點(diǎn)C.刪除首結(jié)點(diǎn)D.首結(jié)點(diǎn)成為尾結(jié)點(diǎn)

64.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

65.

66.下列選項(xiàng)中不合法的十六進(jìn)制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

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

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inta=2,i;

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

printf("%4d",f(a));

A.789B.678C.567D.876

68.第

15

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

main()

{inta=21,b=11;

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

}

A.30B.31C.32D.33

69.軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

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

A.1,2,3,1,5,9,

B.1,3,5,1,3,5,

C.1,3,5,0,d,8,

D.1,3,5,-1,3,7,

71.有以下程序:

voidmain()

{inta=1,b=2,m=0,n=0,k;

k=((n=b>a)+b)‖(m=a<b);

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

}

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

A.0,0B.0,1C.1,0D.1,1

72.

73.

若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項(xiàng)是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

74.

75.

有以下程序:

main

{inta=0,b=l0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序輸出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯(cuò)

76.有如下程序段:

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

A.trueB.falseC.0D.1

77.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

{for(j=0;j<2;j++)printf("%2d",a[i][j]);

printf("\n");

}

}

若運(yùn)行時(shí)輸入123<回車>,則輸出結(jié)果為

78.

79.合法的數(shù)組定義是()。

A.

B.

C.

D.

80.

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對(duì)數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;//****found****for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[[i]<a[p])p=i;t=a[p];a[p]=aEj3;//****found****a[p]=t;}}voidmain{intarr[M]={11,32,-5,2,14},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");proc(arr,m);printf("排序后的順序:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");}

六、程序設(shè)計(jì)題(1題)82.請(qǐng)編寫一個(gè)函數(shù)voidproc(intm,intk,intxxE3),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入206,則應(yīng)輸出232931374143。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:

參考答案

1.A題干中,“x++&&y++”屬于邏輯與表達(dá)式。僅當(dāng)“x++”和“y++”的結(jié)果為真,整個(gè)邏輯表達(dá)式的結(jié)果才為真,否則整個(gè)表達(dá)式的結(jié)果為假。當(dāng)“x++”的結(jié)果為0時(shí),“y”就會(huì)被短路,即不再執(zhí)行“y++”表達(dá)式,整個(gè)表達(dá)式的結(jié)果為假。所以當(dāng)x的值為0時(shí),“x”的結(jié)果也是0,“y”操作被“短路”,y值不變。故本題答案為A選項(xiàng)。

2.A

3.D

4.Dfprintf函數(shù)和fscanf函數(shù)都可以讀寫文本文件,而fwrite和fread函數(shù)可以讀寫二進(jìn)制文件,選項(xiàng)A、C錯(cuò)誤;文件以“r”方式打開后,只可以讀取文本數(shù)據(jù),選項(xiàng)B錯(cuò)誤。故本題答案為D選項(xiàng)。

5.C解析:在Windows環(huán)境下,單擊當(dāng)前窗口中的按鈕“x”,其功能是終止當(dāng)前應(yīng)用程序的運(yùn)行,關(guān)閉當(dāng)前窗口。

6.A選項(xiàng)A為正確用法,先將字符串存于字符數(shù)組中,然后將數(shù)組名賦給字符指針(數(shù)組名代表數(shù)組首地址,定義數(shù)組時(shí)為其分配確定的地址)。C選項(xiàng)錯(cuò)誤,getchar函數(shù)輸入一個(gè)字符給字符型變量,而不是字符指針。B選項(xiàng)和D選項(xiàng)有類似的錯(cuò)誤,兩個(gè)選項(xiàng)并無語法錯(cuò)誤,但運(yùn)行時(shí)可能會(huì)出現(xiàn)問題。因?yàn)樵贐選項(xiàng)和D選項(xiàng)中,字符指針沒有被賦值,是一個(gè)不確定的值,指向一個(gè)不確定的內(nèi)存區(qū)域,這個(gè)區(qū)域可能存放有用的指令或數(shù)據(jù)。在這個(gè)不確定的區(qū)域重新存放字符串,可能會(huì)發(fā)生無法預(yù)知的錯(cuò)誤。故本題答案為A選項(xiàng)。

7.B

8.AC語言程序是由函數(shù)組成的,所以B選項(xiàng)錯(cuò)誤。C語言函數(shù)可以單獨(dú)進(jìn)行編譯,所以C選項(xiàng)錯(cuò)誤。每個(gè)C語言程序必須包含一個(gè)main函數(shù),但不是每個(gè)C語言程序文件都必須有一個(gè)main函數(shù),用戶單獨(dú)編寫的某個(gè)函數(shù)也可以存儲(chǔ)為一個(gè)C語言程序文件,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

9.C

10.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A項(xiàng)。

11.B

12.D

13.C先輸出a、b表示退一格,當(dāng)執(zhí)行到:\b后,光標(biāo)往后退,接著輸出re'hi'y\(反斜杠后又加一個(gè)反斜杠的意思是要輸出一個(gè)反斜杠),此時(shí)又執(zhí)行:\b后,\就被ou覆蓋。

14.C

15.C解析:在n個(gè)結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn))中,每個(gè)結(jié)點(diǎn)都有一個(gè)指針單元(即指針域),加上頭指針,至少需要n+1個(gè)指針單元。

16.A

17.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b為逗號(hào)表達(dá)式,運(yùn)算后取a+b的值為5,c++為3,故函數(shù)調(diào)用后輸出結(jié)果為8。

18.C解析:位運(yùn)算符“|”的作用是按位或,即兩個(gè)二進(jìn)制數(shù)的相應(yīng)位中只要一個(gè)為1,該位的結(jié)果值為1。最后以字符型輸出,98對(duì)應(yīng)的字符“b”。

19.D

20.CC語言中,switch語句中的表達(dá)式和case表達(dá)式都不能是浮點(diǎn)類型。所以選C。

21.3

22.1616解析:在程序中首先將8賦值給變量a,然后再進(jìn)行復(fù)合賦值運(yùn)算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。

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

24.B66B66解析:字符B的ASCII碼值為66,因此,按%c形式輸出B,按%d形式輸出66,輸出結(jié)果為:B66。

25.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

26.C

27.(*B).dat.b->day

28.4040解析:本題中指針s1和s2都指向同一個(gè)內(nèi)存中的地址。因此語句“*s2=20;”執(zhí)行后,*\u3000s1=*s2=20。所以m最后的值為40。

29.消息消息解析:對(duì)象之間進(jìn)行通信的構(gòu)造叫做消息,它請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

30.錯(cuò)誤。錯(cuò)誤。解析:數(shù)據(jù)庫恢復(fù)是將數(shù)據(jù)庫中的數(shù)據(jù)從錯(cuò)誤狀態(tài)中恢復(fù)到某種邏輯一致的狀態(tài)。如果數(shù)據(jù)庫中包含成功事務(wù)提交的結(jié)果,則稱數(shù)據(jù)庫處于一致性狀態(tài)。

31.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級(jí)模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲(chǔ)結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

32.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=1時(shí),因?yàn)閕f語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時(shí)i自加1;執(zhí)行第二次for循環(huán)時(shí),i:3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時(shí)i自加1執(zhí)行第三次for循環(huán)時(shí),i=5,訌語句條件滿足,所以執(zhí)行printf('%d\\n',i)輸出5,然后break語句跳出了for循環(huán)。

33.max=12min=2

34.存儲(chǔ)結(jié)構(gòu)

35.無限無限解析:分析程序“while(s)”語句后面有一個(gè)“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

36.100010100010解析:首先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。

37.6060解析:程序中定義a是一個(gè)3行2列的二維數(shù)組,p是指向兩個(gè)元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

38.查詢查詢

39.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。

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

41.B解析:位運(yùn)算12&012即1100&1010,結(jié)果是1000,轉(zhuǎn)化成十進(jìn)制數(shù)是8,所以,輸出結(jié)果是8。

42.C解析:程序中定義了兩個(gè)變量a和b,并分別賦初值為7和8,定義了3個(gè)指針變量p、q、r,并讓指針p指向變量a,讓q指向變量b,然后通過一個(gè)中間指針變量r,使指針變量p和q互換,互換后p指向b,q指向a,因此最后輸出的*p、*q的值為8、7、a、b的值沒有改變?nèi)詾?、8。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

43.B[答案]B

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

[評(píng)析]依次從上到下,可得出:

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

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

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

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

44.A解析:本題首先定義兩個(gè)字符型指針變量p和q,通過malloc()函數(shù)申請(qǐng)20個(gè)字符的存儲(chǔ)空間,并把它的首地址賦給p,再把p的值賦給小p和q指向同一個(gè)存儲(chǔ)區(qū)。在scanf()語句中讀取字符串到p和q指向的字符串,先把a(bǔ)bc讀取到p指向的存儲(chǔ)區(qū)中,第一個(gè)空格是結(jié)束標(biāo)記,第二個(gè)空格是分隔符,再把def存放到q指向的存儲(chǔ)區(qū),把原先的內(nèi)容覆蓋。所以p和q指向的存儲(chǔ)區(qū)內(nèi)容是def,故最后輸出的def,def。4個(gè)選項(xiàng)中A正確。

45.C解析:如果一個(gè)字符數(shù)組用來存儲(chǔ)字符串,那么在定義該字符數(shù)組時(shí),數(shù)組的大小應(yīng)該比它將要實(shí)際存放的字符串長度大1,所以選項(xiàng)A)和B)錯(cuò);選項(xiàng)D)中s本身就是一個(gè)字符指針,不需再取地址。

46.C解析:本題考查字符數(shù)組和字符串賦值給數(shù)組的一些區(qū)別。語句“charm[]='1234567';”定義了一個(gè)字符型數(shù)組并進(jìn)行了初始化,C語言規(guī)定,在字符串的末尾自動(dòng)加上串結(jié)束標(biāo)記\'\\0\',因此數(shù)組m的長度是8;而數(shù)組n是按照字符方式對(duì)數(shù)組進(jìn)行初始化,系統(tǒng)不會(huì)自動(dòng)加上串結(jié)束標(biāo)記\'\\0\',因此數(shù)組n的長度是7。

47.A解析:從工程管理的角度看,軟件設(shè)計(jì)可分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩大步驟。概要設(shè)計(jì)是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架;詳細(xì)設(shè)計(jì)是將其進(jìn)一步精化成軟件的算法或表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)又由若干活動(dòng)組成,包括總體結(jié)構(gòu)設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì)。因此,本題的正確答案是A。

48.D解析:函數(shù)scanf的地址列表應(yīng)由變量的地址組成。選項(xiàng)A中雖然&p也為地址,但它是指針變量p的地址,該地址的存儲(chǔ)單元中只能存放地址值,不能存放整型數(shù)據(jù)。選項(xiàng)B中*p相當(dāng)于變量n,所以不能正確讀入數(shù)據(jù);選項(xiàng)C不正確,因?yàn)閚為變量名;選項(xiàng)D中p為指針變量,并且值為變量n的地址,所以選項(xiàng)D能夠正確讀入數(shù)據(jù)。D為所選。

49.B解析:此題考查了字符串輸入函數(shù)gets和字符串比較函數(shù)strcmp,另外還有字符輸出函數(shù)putchar。gets從標(biāo)準(zhǔn)輸入設(shè)備中讀入全部字符,包括空格,直到遇到回車符為止。strcmp是字符串比較函數(shù),即strcmp(字符串1,字符串2),如果字符串1=字符串2,則函數(shù)值為0;如果字符串1>字符串2,則函數(shù)值為一正整數(shù);如果字符串1<字符串2,則函數(shù)值為一負(fù)整數(shù)。putchar(c)函數(shù)將字符c輸出到標(biāo)準(zhǔn)輸出設(shè)備上。

50.D

51.A解析:對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接的對(duì)應(yīng)關(guān)系,對(duì)象之間通過傳遞消息互相聯(lián)系,從模擬現(xiàn)實(shí)世界中不同事物彼此之間的聯(lián)系,B)、C)、D)是正確的,對(duì)象的思想廣泛應(yīng)用于C++、Java等語言中,因此A)錯(cuò)誤。

52.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號(hào)字符;“\\\\”格式符表示輸出反斜線字符。

53.D解析:在C++語言中退格符表示為\\b退格。注意:其他轉(zhuǎn)義字符的意義:\\n表示回車換行,\\t表示橫向跳到下一制表位置,\\v表示豎向跳格,\\r表示回車,\\f表示走紙換頁,\\\\表示反斜線符,\\a表示鳴鈴,\\ddd1~3位表示八進(jìn)制數(shù)所代表的字符,\\xhh1~2位表示十六進(jìn)制數(shù)所代表的字符。

54.B解析:本題用循環(huán)的方法考查對(duì)數(shù)組概念的掌握。首先,當(dāng)i=0時(shí),數(shù)組中的位置是a[2][0]=7,當(dāng)然,如果用排除法,就不用考慮后面的循環(huán),因?yàn)樵?個(gè)選項(xiàng)中,第1個(gè)數(shù)為7的選項(xiàng)只有B)。本題執(zhí)行第2次循環(huán)時(shí),i的值為1,則printf函數(shù)中的數(shù)組指向?yàn)閍[1][1]=5,依次循環(huán),可求出答案。

55.C解析:程序中由于n為整型,所以1/n的結(jié)果始終為0,故程序最后輸出的結(jié)果為0,其結(jié)果錯(cuò)誤,原因?yàn)樵诒磉_(dá)式1/n中1和n均為整型,所以應(yīng)該將1改為1.0,這樣表達(dá)式1.0/n的值不為0,為該數(shù)學(xué)表達(dá)式的值,因此可以知道導(dǎo)致程序運(yùn)行后輸出結(jié)果錯(cuò)誤的行為“s=s+1/n;”,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

56.D解析:一維數(shù)組的定義方式為:

類型說明符數(shù)組名[常量表達(dá)式];

選項(xiàng)A符合此定義形式,正確;C語言中多維數(shù)組賦初值時(shí)可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項(xiàng)C正確;另外,如果對(duì)全部數(shù)組元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長度可以不指定,但第二維的長度不能省,所以選項(xiàng)B正確,而選項(xiàng)D是錯(cuò)誤的。

57.A

58.A

59.D解析:scanf函數(shù)的調(diào)用形式是:scanf(格式字符串,輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項(xiàng)地址表”是要輸入的變量的地址。題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,例如變量a的地址為“&a”。

60.C解析:選項(xiàng)A)和選項(xiàng)B)在條件判斷語句的后面是空語句,什么都不做;在選項(xiàng)D)if后面是一個(gè)復(fù)合空語句;而在選項(xiàng)C)中,在x--后面少了一個(gè)分號(hào),所以程序段在編譯時(shí),會(huì)出現(xiàn)語法錯(cuò)誤。

61.B本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以B正確。

62.A選項(xiàng)A計(jì)算的是p口字符數(shù)組首地址所占的內(nèi)存字節(jié)數(shù)。選項(xiàng)8、C和D都能計(jì)算出一個(gè)字符型數(shù)據(jù)所占的字節(jié)數(shù)。

63.D本題考查鏈表的操作,本題中首先是s指向了它的下個(gè)結(jié)點(diǎn),題目中說明了s總是指向鏈表的第一個(gè)結(jié)點(diǎn),然后while循環(huán)找到鏈表的最后一個(gè)元素,然后最后一個(gè)元素指向了之前鏈表的頭結(jié)點(diǎn),之前頭結(jié)點(diǎn)指向了空結(jié)點(diǎn),所以本題實(shí)現(xiàn)的功能是使首結(jié)點(diǎn)成為尾結(jié)點(diǎn)。選項(xiàng)D正確。

64.By=(x=)071:x<0?-1:0)中有兩個(gè)三目運(yùn)算符,因此按從右到在的順序運(yùn)算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項(xiàng)。

65.C

66.C十六進(jìn)制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個(gè)數(shù)字和a、b、C、d、e、f這6個(gè)字母。

67.Ai=0,f(a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論