2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年廣東省佛山市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.關于數(shù)組和指針,以下說法錯誤的是()。

A.數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置

B.既可以讀入數(shù)據(jù)到數(shù)組中,也可以讀入數(shù)據(jù)到未賦初值的指針中

C.可以將指針指向一個同類型的數(shù)組

D.指針可以指向同類型的數(shù)組中的任意一個元素

3.下列語句中,說法正確的是______。

A.C程序書寫格式嚴格,每行只能寫一個語句

B.C程序書寫格式嚴格,每行必須有行號

C.C程序書寫格式自由,每行可以寫多條語句,但之間必須用逗號隔開

D.C程序書寫格式自由,一個語句可以分寫在多行

4.

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

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

6.以下程序的輸出結(jié)果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

7.算法的時間復雜度取決于()

A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B

8.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數(shù)分別賦給變量a、b、c的語句是______。

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

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

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

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

9.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64

10.有以下程序:

程序運行后的輸出結(jié)果是()。A.1B.11C.7D.9

11.對矩陣進行壓縮存儲是為了()。

A.方便運算B.方便存儲C.提高運算速度D.減少存儲空間

12.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的輸出結(jié)果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930

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

intf1(intx,inty){returnx>y?x:y;}

intf2(intx,inty){returnx>y?y:x;}

main()

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,B),f1(c,D));

f=f1(f2(a,B),f2(c,D));

g=a+b+C+d-e-f;

phntf("%d,%d,%d\n",e,f,g);

}

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

14.考慮函數(shù)原型voidtest(inta,intb=7,charz='*'),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是()。

A.test(5)B.test(5,8)C.test(6,'#')D.test(0,0,'*')

15.對于下述說明,不能使變量p->b的值增1的表達式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

16.

17.設有定義“inta=1,b=2,c=3;”,以下語句中執(zhí)行效果與其他3個不同的是()。A.if(a>b)c=a,a=b,b=c;

B.if(a>b){c=a,a=b,b=c;}

C.if(a>b)c=a;a=b;b=c;

D.if(a>b){c=a;a=b;;b=c;}

18.將數(shù)據(jù)和操作置于對象統(tǒng)一體中的實現(xiàn)方式是()。

A.隱藏B.抽象C.封裝D.結(jié)合

19.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達式:(x+y)%2+(int)a/(int)b的值是()。

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

20.下列表達式中,可以正確表示的關系是()。

A.(x>=1)10(x<=0)B.x>1‖x=0C.x>=1ORx<=0D.X>=1&&x<=0

二、2.填空題(20題)21.若有如下結(jié)構(gòu)體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

22.結(jié)構(gòu)化程序設計的3種基本結(jié)構(gòu)分別是順序、選擇和______。

23.以下程序的運行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:case2:return1;

}

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(5);

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

}

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

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

如:dp=x*-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,D);

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

}

25.注釋一般分為序言性注釋和______注釋。

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

27.下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

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

structNode}

intx;

charch;

};

fun(structNode*sn)

}statick=1;

sn->x=20;

Sn->ch='a'+k++;

}

main()

{inti;

staticstructNodest=}10,'a'};

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

fun(&st);

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

}

29.設有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語句;t=B*2;t為int型變量后的值是______。

30.使用結(jié)構(gòu)體處理數(shù)據(jù)的場合是【】。

31.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

32.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

33.對下列二叉樹進行中序遍歷的結(jié)果為【】。

34.以下程序的功能是從鍵盤輸入若干學生的成績,并輸出最高成績和最低成績,當輸入負數(shù)時結(jié)束。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(【】)

{if(x>amax)amax=x;

else

if(【】)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

35.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

36.若按功能劃分,軟件測試的方法通常分為______測試方法和黑盒測試方法。

37.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

39.有以下程序

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

main()

{intx,y;

scanf("%d",&x);

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

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

}

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

40.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

三、1.選擇題(20題)41.設有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

42.下面程序main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%d\n",k,a,B);}的輸出是_______。

A.003B.012C.103D.112

43.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(0<=i<4,0<=j<10)

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

44.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦予10.0,b賦予22.0,c賦予33.0,不正確的輸入形式是()。

A.10<回車>

B.10.0,22.0,33.0<回車>22<回車>33<回車>

C.10.0<回車>

D.1022<回車>22.033.0<回車>33<回車>

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

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

46.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

47.若有如下調(diào)用函數(shù):intsub(int*t){return(t);}該函數(shù)的返回值是()

A.形參t中存放實參變量的地址值B.形參t自身的地址值C.指針變量t所指的實參變量的值D.隨機的值

48.有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);}程序運行后的輸出結(jié)果是______。

A.SunDan20044580

B.Penghua20045537

C.LiSiGUO20042580

D.SunDan20041703

49.數(shù)據(jù)的存儲結(jié)構(gòu)是指

A.數(shù)據(jù)所占的存儲空間量B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中表示C.數(shù)據(jù)在計算機中的順序存儲方式D.存儲在外存中的數(shù)據(jù)

50.對如下二叉樹:ABDECF進行后序遍歷的結(jié)果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

51.有以下程序structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));}程序運行后的輸出結(jié)果是

A.10B.11C.20D.21

52.下列用于printf函數(shù)的控制字符常量中,代表“豎向跳格”的轉(zhuǎn)義字符常量是()。

A.\bB.\tC.\vD.\f

53.有以下程序#include<stdio.h>main(){intk=5,n=0;while(k>0){switch(k){defhult:break;case1:n+=k:case2:case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是()

A.0B.4C.6D.7

54.下列程序的功能是給r輸入數(shù)據(jù)后計算半徑為r的圓面積s。程序在編譯時出錯。main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*π*r*r;printf("s=%f\n",s);}出錯的原因是()。

A.注釋語句書寫位置錯誤

B.存放圓半徑的變量r不應該定義為整型

C.輸出語句中格式描述符非法

D.計算圓面積的賦值語句中使用了非法變量

55.在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

56.變量m的值為8,m的地址為1010,若欲使p為指向m的指針變量,則下列賦值正確的是()。

A.&m=8B.*p=8C.*p=1010D.p=&m

57.下列關于單目運算符++、--的敘述中正確的是A.它們的運算對象可以是任何變量和常量

B.它們的運算對象可以是char型變量和int型變量,但不能是float型變量

C.它們的運算對象可以是int型變量,但不能是double型變量和float型變量

D.它們的運算對象可以是char型變量、int型變量和float型變量

58.待排序的關鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關鍵碼值遞增的順序排序,采取以第一個關鍵碼為基準元素的快速排序法,第一趟排序后關鍵碼33被放到第()個位置。

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

59.下列敘述中正確的是______。

A.C程序中注釋部分可以出現(xiàn)在程序中任何合適的地方

B.花括號""{""和""}""只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

60.有下列程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應該是()。

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

四、選擇題(20題)61.下列敘述中正確的是()。A.棧是“先進先出”的線性表

B.隊列是“先進后出”的線性表

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

D.有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)

62.

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

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

63.

64.若有以下程序段:

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

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

65.對如下二叉樹進行后序遍歷的結(jié)果為()。

A.A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

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

structabc

{

inta,b,c;

}

main()

{

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

intt;

t=s[0].a+s[1].b;

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

}

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

67.設有如下程序段

68.

69.有如下程序:main(){intx=23;do{printf(”%d”,x--);}while(!x);}該程序的執(zhí)行結(jié)果是()。A.321B.23C.不輸出任何內(nèi)容D.陷入死循環(huán)

70.

71.下面程序由兩個源程序文件t4.h和t4.c組成,程序編譯運行的結(jié)果是()。

t4.h的源程序為:

A.920B.1611C.911D.1610

72.

73.若有定義語句:

74.一棵二叉樹共有25個結(jié)點,其中5個是葉子結(jié)點,則度為1的結(jié)點數(shù)為()。

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

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

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

76.

77.有以下程序

#include<stdio.h>

#include<stdlib.h>

intfun(intt)

{int*p;

p=(int*)malloc(sizeof(int));

*p=t;return*p;

}

main()

{inta;

a=fun(8);

printf("%d\n",a+fun(10));

}

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

A.0B.10

C.18D.出錯

78.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(xiàn)(a++,b++));}程序運行后的輸出結(jié)果是

A.12B.15C.16D.20

79.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

80.

五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。

#include“stdio.h”

Main

{inta[]={1,2,3,-4,5};

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和奉號。編寫函數(shù)fun,其功能是:刪除字符串中所有的。號。編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為,刪除后,字符串中的內(nèi)容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)缸的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.D

2.BC語言中,數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置,選項A正確;已經(jīng)定義的數(shù)組被分配了內(nèi)存空間,所以可以讀入數(shù)據(jù)到數(shù)組中,未賦初值的指針沒有分配內(nèi)存空間,不可以讀入數(shù)據(jù),選項B錯誤;可以將指針指向一個同類型的數(shù)組,選項C正確;指針指向一個數(shù)組后,可以通過移動指針,指向該數(shù)組中的任意一個元素,選項D正確。故本題答案為B選項。

3.D

4.A

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

6.B當b=1時,a=1,第二個if語句成立,此時a=6,返回for循環(huán);當b=2,兩個if語句都為假,此時a=3,再返回循環(huán);當b=3,第二個if成立,此時a=8,繼續(xù)循環(huán);當b=4,第一個if成立,退出for循環(huán)體時b為4,a為8。

7.C

8.A解析:選項B中d已經(jīng)為地址,不應在加上求地址符號“&”,故選項B不正確;選項C中,a和b都為變量不是地址,應該在a和b之前加上求地址符號“&”,故選項C不正確:選項D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項D不正確,所以,4個選項中A為所選。

9.C本題考查for循環(huán)及if語句。當執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。

10.D題干中,函數(shù)fun的功能是將二維數(shù)組p的行下標為1、列下標為1的元素(p[1][1])的值賦給二維地址s指向的*s所指向的存儲單元。main函數(shù)中定義了整型指針p,動態(tài)分配了整型長度的內(nèi)存空間,調(diào)用函數(shù)fun將數(shù)組元素a[1][1],即9賦給p所指向的空間。本題答案為D選項。

11.D

12.A解析:在printf函數(shù)常用的格式說明中,每個格式說明都必須用“%”開頭,以—個格式字符作為結(jié)束,在此之間可以根據(jù)需要插入“寬度說明”、左對齊符號“-”、前導零符號“0”等。本題中用到了d和f,d代表輸出符號的十進制整型數(shù),f代表以帶小數(shù)點的數(shù)學形式輸出浮點數(shù)(單精度和雙精度數(shù))。對于float和double類型的實數(shù),可以用“n1.n2”的形式來指定輸出寬度(n1和n2分別代表—個整常數(shù)),其中n1指定輸出數(shù)據(jù)的寬度(包括小數(shù)點),n2指定小數(shù)點后小數(shù)位的位數(shù),由于輸出格式是以緊湊格式輸出,因此選項A是正確的。

13.A解析:根據(jù)函數(shù)intf1(intx,inty){returnx>y?x:y;}和int饅(intx,inty){retumx>y?y:x;}的定義可知,如果x>y成立,則函數(shù)n返回x的值,函數(shù)C返回y的值。所以n(a,B=4,n(c,d)=5,C(a,B=3,f2(c,d)=2,故e=f2(4,5)=4,f=n(3,2)=3,g=4+3+5+2-4-3=7。

14.C

15.D解析:p->b應作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。

16.D

17.C因為變量“a=1,b=2”,所以表達式“a>b”不成立。選項A、B和D相當于一條語句,選項A是逗號表達式,選項B和選項D是復合語句,所以都沒有執(zhí)行。選項C中,語句“c=a;”不執(zhí)行,語句“a=b;b=c;”執(zhí)行。故本題答案為C選項。

18.C對象具有封裝性,從外面看只能看到對象的外部特性,對象的內(nèi)部對外是封閉的。即封裝實現(xiàn)了將數(shù)據(jù)和操作置于對象統(tǒng)一體中。本題答案為C選項。

19.D

20.A解析:題中要求x的取值是小于等于0或者大于等于1,這說明表達式是或的關系,所以在寫成C語言表達式應是邏輯或的關系,邏輯或運算符是'‖'。

21.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。

結(jié)構(gòu)體類型的定義:

struct結(jié)構(gòu)體類型名

{

成員項表;

};

定義結(jié)構(gòu)體變量的的形式為:

struct結(jié)構(gòu)體類型名變量1,變量2,...?

其中變量包括;一般變量、指針變量、數(shù)組變量等。

22.重復(循環(huán))重復(循環(huán))解析:結(jié)構(gòu)化程序設計包括3種基本的結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復結(jié)構(gòu)(循環(huán)結(jié)構(gòu)),利用這3種結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設計方法。其中利用循環(huán)結(jié)構(gòu),可以簡化大量的程序執(zhí)行。

23.k=5k=5解析:由題可知fib(0)的值為0,fib(1)和fib(2)的值為1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。

24.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

25.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

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

解析:本題以浮點格式輸出z值,寬度為5,有2位小數(shù)。應該注意的是,兩個整數(shù)運算結(jié)果仍為整數(shù),如1/2的結(jié)果為0。本題可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值為6.6。

28.20c。20,c。解析:函數(shù)fun的功能是給結(jié)構(gòu)體指針變量所指的結(jié)構(gòu)體變量的各成員賦值,主函數(shù)兩次調(diào)用函數(shù)fun,第一次調(diào)用,實參st兩個成員的值是20和字符b,調(diào)用結(jié)束時,靜態(tài)局部變量k沒有釋放,值為2:第二次調(diào)用,實參st兩個成員的值是20和字符c,調(diào)用結(jié)束時,靜態(tài)局部變量k沒有釋放,值為3;因此,輸出結(jié)果是20和c。

29.88解析:本題考查帶參數(shù)的宏定義及相關運算.運算過程為:t=B*2=A+3*2=2+3*2=8。

30.把不同類型的數(shù)據(jù)作為整體處理

31.-4-4解析:if-else構(gòu)造了一種二路分支選擇,是一種最基本的選擇結(jié)構(gòu),if(條件)S1(if分結(jié)構(gòu))elseS2(else分結(jié)構(gòu)),它的工作過程是:先對條件表達式進行判斷,若為真(成立,值為非零),就執(zhí)行if分結(jié)構(gòu)(S1);否則(不成立,值為0),就執(zhí)行else分結(jié)構(gòu)(S2)。本題中,n=O,可以判斷(!n)為真,執(zhí)行“x=x-1=2-1=1;m=1”,可以判斷(m)為真,執(zhí)行“x=x-2=1-2=-1;”進而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。所以,最后輸出為-4。

32.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函數(shù)有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù),其中格式控制參數(shù)由兩種成分組成:格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數(shù)項的轉(zhuǎn)換與顯示,它是由“%”引出并以一個類型描述符結(jié)束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數(shù),所以格式說明項為%d,也可以在%與d之間加上域?qū)?,另外還要在每行輸出結(jié)束時加轉(zhuǎn)義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

33.ACBDFEHGPACBDFEHGP解析:中序遍歷方法的遞歸定義;當二叉樹的根不為空時,依次執(zhí)行如下3個操作:①按中序遍歷左子樹。②訪問根結(jié)點。③技中序遍歷右子樹。根據(jù)遍歷規(guī)則來遍歷本題中的二叉樹。首先遍歷F的左子樹,同樣按中序遍歷。先遍歷C的左子樹,即結(jié)點A,然后訪問C,接著訪問C的右子樹,同樣按中序遍歷C的右子樹,先訪問結(jié)點B,然后訪問結(jié)點D,因為結(jié)點D沒有右子樹,因此遍歷完C的右子樹,以上就遍歷完根結(jié)點F的左子樹。然后訪問根結(jié)點F,接下來遍歷F的右子樹,同樣按中序遍歷。首先訪問E的左子樹,E的左子樹為空,則訪問結(jié)點E,然后訪問結(jié)點E的右子樹,同樣按中序遍歷。首先訪問G的左子樹,即H,然后訪問結(jié)點G,最后訪問G的右子樹P。以上就把整個二叉樹遍歷一遍,中序遍歷的結(jié)果為ACBDFEHGP。因此,劃線處應填入“ACBDFEHGP”。

34.x>=0x<aminx>=0x<amin解析:本題先從鍵盤接受數(shù)值,并分別賦給amax(用于保存最高成績)和amin(用于保存最低成績),然后通過while循環(huán)控制是否結(jié)束輸入,并且通過if語句來給amax和amin賦值。

35.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

36.白盒白盒解析:軟件測試的方法分為白盒測試方法和黑盒測試方法.

37.自然連接自然連接解析:在關系運算中,自然連接運算是對兩個具有公共屬性的關系所進行的運算。

38.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從case1:后面的語句開始執(zhí)行,而case1:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行case1:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變1。所以最后輸出的a和b的值為21。

39.1010解析:本題程序中定義了一個函數(shù)sub(),用來計算一個整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個十進制整數(shù)1234,然后對1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應該返回的值是123+4=127;然后中間一層調(diào)用應該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

40.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

41.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

42.C解析:a++是先使用a值再將a的值加1,b-是先使用b的值再將b的值減1,所以題中的邏輯運算表達式的值應當為真,即為1,而經(jīng)過運算后,a和b的值已經(jīng)分別變成0和3了。

43.B解析:本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。

44.B解析:本題scanf()函數(shù)中輸入格式串為“%f%f%f”,要求輸入變量a、b和c時用空格隔開,也可以用<回車>分隔。選項A中從鍵盤輸入3個變量的值時用<回車>符隔開,滿足輸入格式串的要求,故選項A的輸入方式能達到題意的要求。選項B中從鍵盤輸入3個變量的值時中間用了“,”隔開,而在輸入格式串中沒有要求用“,”隔開,故選項B的輸入方式不能達到題意的要求;選項C和D中分別都用了<回車>和空格宋分隔,滿足輸入格式串的要求,故選項C和D的輸入方式也能達到題意的要求。所以,4個選項中選項B符合題意。

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

46.D【解析】算法的空間復雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術,以便盡量減少不必要的額外空間。

47.A

48.B解析:f函數(shù)用了顯式傳地址的方式,因此主函數(shù)中的s值發(fā)生了變化。

49.B解析:數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)元素在計算機存儲器內(nèi)的表示。數(shù)據(jù)的存儲結(jié)構(gòu)是邏輯結(jié)構(gòu)用計算機語言的實現(xiàn),即建立數(shù)據(jù)的機內(nèi)表示。

50.D

51.B解析:本題中定義了一個結(jié)構(gòu)體數(shù)組data[2]并初始化,主函數(shù)中定義了一個結(jié)構(gòu)體類型指針變量并讓它指向data的首地址,由于p指向第一個元素的地址,所以p->x相當于data[0].x即為10,所以++(p->x)后的值為11。

52.C本題考查C語言轉(zhuǎn)義字符的含義。我們歸類了常用的轉(zhuǎn)義字符及其含義,如下,根據(jù)這些不難選出正確答案

轉(zhuǎn)義字符的意義:\n回車換行、\t橫向跳到下一制表位置、\v豎向跳格、\b退格、\r回車、\f走紙換頁、\\反斜線符、“\”\′單引號符、\\ddd1~3位八進制數(shù)所代表的字符、\xhh1~2位十六進制數(shù)所代表的字符。

53.D解析:因為沒有break語句,當k=2的時候,會順序執(zhí)行兩條語句,k=1的時候,會順序執(zhí)行3條語句。

54.D解析:在C語言程序中,可以用一個符號名來代表一個常量,稱為符號常量。這個符號名必須在程序中進行特別的“指定”,并符合標識符的命令規(guī)則。在本題中圓周率π是一個符號常量,但在程序中并沒有指定其值,所以編譯器找不到其值就會報錯。所以選項D)正確。

55.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間,函數(shù)調(diào)用時返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內(nèi)存空間。

56.D解析:指針變量是通過指向變量地址來指定變量值的。這里只要取m的地址賦給p,即可實現(xiàn)使p為指向m的指針變量。

57.D本題主要考查自加與自減運算符。在C語言中,自加與自減運算符具有以下性質(zhì):

(1)自加運算符“++”和自減運算符“--”的運算本身是一種賦值運算,其結(jié)果是使運算對象的值增1或減1。

(2)++、--運算符是單目運算符,運算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達式。

(3)自加、自減運算符無論是作為前綴還是后綴運算符,對于變量而言,其效果相同,但作為表達式來說,其值不同。

(4)++和--運算符的結(jié)合方向是“自右向左”。

(5)不要在一個表達式中對同一個變量進行多次自增或自減運算。可以知道本題正確的答案是D。

58.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。

59.A解析:C程序中注釋部分用“/*”和“*/”括起來,可以出現(xiàn)在程序中任何合適的地方;花括號“{”和“}”不僅可作為函數(shù)體的定界符,也可作為復合語句的定界符;構(gòu)成C程序的基本單位是函數(shù):一個語句必須在最后出現(xiàn)分號,分號是C語句中不可缺少的部分。

60.D解析:首先定義了一個指向一維數(shù)組b的指針p,一個指向

溫馨提示

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

評論

0/150

提交評論