2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第1頁
2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第2頁
2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第3頁
2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第4頁
2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年甘肅省慶陽市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于下述說明,不能使變量p->b的值增1的表達式是______。structexm{inta;intb;floatc}*p;

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

2.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運行后的輸出結果是()。A.AB.aC.HD.h

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

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

4.

5.有定義:“inta=2,b=3,c=4;”,則下列選項中值為0的表達式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)

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

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

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

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

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

7.以下函數(shù)調(diào)用語句中含有實參個數(shù)為().func((exp1,exp2),(exp3,exp4,exp5));

A.1個B.2個C.4個D.5個

8.

9.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序執(zhí)行后輸出結果是()。A.n=5B.n=2C.n=3D.n=4

10.以下有關宏替換的敘述不正確的是()。A.A.使用宏定義可以嵌套

B.宏定義語句不進行語法檢查

C.雙引號中出現(xiàn)的宏名不替換

D.宏名必須用大寫字母表示

11.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

12.

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

A.在switch語句中,不一定使用break語句

B.break語句只能用于switch語句

C.break語句必須與switch語句中的case配對使用

D.在switch語句中必須使用default

14.數(shù)據(jù)字典(DD)所定義的對象都包含于()。

A.軟件結構圖B.方框圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖

15.設有6個結點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。

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

16.

17.在10000個int型變量中找出最大的100個,使用下列排序算法中哪一種用時最快()

A.冒泡排序B.快速排序C.歸并排序D.堆排序

18.若有以下定義和語句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));則輸出結果是()。A.55B.105C.107D.58

19.下列哪個算法是對一個list排序的最快方法()

A.快速排序B.冒泡排序C.二分插入排序D.線性排序

20.設散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

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

二、2.填空題(20題)21.以下程序運行后的輸出結果是【】。

main()

{

intx=0210;

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

}

22.數(shù)據(jù)庫系統(tǒng)在其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,【】給出了數(shù)據(jù)庫物理存儲結構和物理存取方法。

23.關系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關系運算包括選擇、連接和【】。

24.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:

1

11

121

1331

14641

其構成規(guī)律是,第0列元素和主對角線元素均為1,其余元素為其左上方和正上方元素之和,數(shù)據(jù)的個數(shù)每行遞增1。請將程序補充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

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

x[i][j]=【】;

}

}

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

doublefun(doublex,inty)

{inti;

doublez;

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

returnz;

}

26.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}

27.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的【】兩部分組成。

28.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符結束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

29.數(shù)據(jù)庫的設計通??梢苑譃檫@樣四個步驟:需求分析、概念設計、______、和物理設計。

30.以下程序的輸出結果是【】。

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

31.以下程序是求矩陣a、b的和,結果存入矩陣c中,請?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

32.以下程序運行后的輸出結果是______。

main()

{

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

inti=0,j=0;

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

j+p[i++];

printf(“%d\n”j);

}

33.下面程序

main()

{intx,y,m,n;

x=5;y=8;

m=++x,x;

n=y+y++;

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

}

運行后,x,y,m,n的值是______。

34.下列程序的運行結果是______。

#definePOW(r)(r)*(r)

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

35.下列程序運行后的輸出結果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運行程序,輸入HOWAREYOU。

36.下列程序的輸出結果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

37.已有定義:charc=‘’;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為()。

38.以下程序調(diào)用隨機函數(shù)得到N個20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個)所在下標傳回主函數(shù)進行輸出,并把最大值作為函數(shù)值返回,請?zhí)羁铡?/p>

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

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

printf(”Theindex;\n");

for(i=0;i<k;i++)printf("%4d",d[i]);

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

for(i=0,j=0;i<N;i++)

if(w[i]==v)【】;

*k=【】;

return【】;

}

39.下面的程序用來統(tǒng)計文件中字符的個數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

40.下列程序的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。

例如,若輸入字符串123412132,指定字符1,則輸出3。請?zhí)羁铡?/p>

#include<stdio.h)

#deftneM81

intfun(char*ss,charc)

{inti=0;

for(;【】;ss++)

if(*ss==c)i++;

returni;

}

main()

{chara[M],ch;

printf("\nPleaseenterastring:");gets(a);

printf("\nPleaseenterachar:");ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));

}

三、1.選擇題(20題)41.若a,b,c1,c2,x,y均是整型變量,正確的switch語句是______。

A.switch(a+b);{case1:y=a+b;break;case0:y=a-b;break;}

B.switch(a*a+b*b){case3;case1:y=a+b;break;case3:y=b-a;break;}

C.switcha{casec1:y=a-b;break;casec2;x=a*b;break;default:x=a+b;}

D.switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}

42.下列描述中不正確的是()。

A.字符型數(shù)組中可以存放字符串

B.可以對字符型數(shù)組進行整體輸入、輸出

C.可以對整型數(shù)組進行整體輸入、輸出

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進行整體賦值

43.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的運行結果是()。

A.14B.15C.16D.17

44.為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言中規(guī)定的if-else配對原則是______。

A.else子句與縮排位置相同的if配對

B.else子句與其之前最近的未被配對的if配對

C.else子句與其之后最近的if配對

D.else子句與同一行上的if配對

45.某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數(shù)為()

A.n+1B.n-1C.2nD.n/2

46.有以下程序main(){inti:10,j=1;printf("%d,%d\n",i--,++j);}執(zhí)行后輸出結果是

A.9,2B.10,2C.9,1,D.10,1

47.下列程序的執(zhí)行結果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%Ad,%d",a,C);c+=-a+++(++B);printf("%d,%d",a,C);}

A.3,14,1B.3,14,2C.2,04,1D.2,14,1

48.下列程序的運行結果為

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

49.有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}

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

50.在關系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹結構B.網(wǎng)結構C.線性表D.二維表

51.當調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組中每一個元素的地址D.數(shù)組每個元素中的值

52.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b=′b′;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

53.以下程序段運行時______。charx[10],y[]="China";x=y;printf("%s",x);

A.將輸出ChinaB.將輸出ChC.將輸出ChiD.編譯出錯

54.若有“doublea;”,則正確的輸入語句是()。

A.scanf("%1f",a);

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

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

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

55.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結果為()。ch='b';k=10;printf("%x,%o,",ch,ch,k);printf("k=%%d\n",k);

A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

56.微型機系統(tǒng)中,對輸入設備趕進行管理的基本程序模塊(BIOS)存放在()

A.RAM中B.ROM中C.硬盤中D.寄存器中

57.下列關于標識符的說法中錯誤的是

A.合法的標識符是由字母、數(shù)字和下劃線組成

B.C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符

C.C語言的標識符可以分為三類,即關鍵字、預定義標識符和用戶標識符

D.用戶標識符與關鍵字不同時,程序在執(zhí)行時將給出出錯信息

58.下面程序的輸出結果是

#include<stdio.h>

#include<string.h>

main()

{char*p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

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

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

59.下面程序的輸出結果是()main(){inti,j;i=16;j=(i++)+i;printf("%d",j);i=15;printf("%d%d",++i,i);}

A.321615B.3315,15C.3415,16D.341615

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

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

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

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

62.若有下列定義(設int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n",i,j);輸出的結果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

63.下面的程序段運行后,輸出結果是()。

A.9B.不確定值C.0D.18

64.以下與存儲類別有關的四組說明符中,全部屬于靜態(tài)類的一組是()。

A.extem和static

B.auto和static

C.register和static

D.register和ex[erll

65.有以下程序:

#include<stdio.h>

intf(intm)

{staticintn=0;

n+=m;

returnn;

}

main()

{intn=0;

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

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

}

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

A.1,2

B.1,1

C.2,3

D.3,3

66.以下程序中函數(shù)f的功能是:當na9為1時,進行由小到大排序;當na9為0時,進行由大到小排序。

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

A.1,2,3,4,5,6,7,8,9,10,

B.3,4,5,6,7,2,1,8,9,10,

C.5,4,3,2,1,6,7,8,9,10,

D.10,9,8,7,6,5,4,3,2,1,

67.有三個關系R、S和t如下:由關系R和s通過運算得到關系T,則所使用的運算為()。

A.笛卡兒積B.交C.并D.自然連接

68.一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。

A.一對一B.一對多C.多對一D.多對多

69.

70.

71.

72.有以下程序

#defineP(a)a+a

voidF(intx)

{return(P(2)*x*x);}

main()

{printf("%d\n",F(1+3));}

程序的運行結果是

A.10B.34

C.64D.編譯出錯

73.

74.關系表中的每一橫行稱為一個()。

A.字段B.元組C.行D.碼

75.設有如下說明:

以下說法正確的是()。

A.NEW是一個結構體變量

B.NEW是一個結構體類型

C.ST是一個結構體類型

D.以上說明形式非法

76.有以下程序:

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

A.12B.14C.1234D.123456

77.以下正確的字符串常量是()。A.A."\\\"

B.'abc'

C.OlympicGames

D.""

78.

79.已知inti=1;執(zhí)行語句while(i++<4);后,變量i的值為()。

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

80.對表達式for(表達式1;;表達式3)可理解為()。

A.for(表達式1;0;表達式3)

B.for(表達式1;1;表達式3)

C.for(表達式1;表達式1;表達式3)

D.for(表達式1;表達式3;表達式3)

五、程序改錯題(1題)81.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫一個函數(shù)intproc(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標并存放在k所指的存儲單元中。例如,輸入如下整數(shù):876675896101999401980431451777則輸出結果為4,999。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

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

2.D多元運算符問號前面表達式為真,所以(a-A+a)賦值給a,括號里的運算是把大寫字母變成小寫字母,所以答案應為選項D。

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

4.B

5.A本題考查邏輯與運算“&&”與邏輯或運算“||”。在選項A中,因為!a=0,所以關系表達式!a=1為0,又因為邏輯與運算符“&&”兩邊的表達式只要一個等于零,則整個表達式為零,所以選項A正確。在選項8中,關系表達式a<b為真,表達式(a<b)&&!C為假,而表達式(a<b)&&!||1為真,所以整個表達式的值為真。選項C中,a&&b的結果為真。在選項D中,a||(b+b)&&(C-a)的結果為真。

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

7.B

8.A

9.Dcontinue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。

10.D解析:本題考查宏替換的規(guī)則。宏替換有兩類:簡單的字符替換和帶參數(shù)的宏替換。使用宏應注意:①宏定義僅僅是符號替換,不是賦值語句,因此不做語法檢查:②為了區(qū)別程序中其他的標示符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

11.D

12.A

13.Aswitch語句中不一定使用break語句,選項A正確;break語句除了用于switch語句,還可以用于循環(huán)語句中,選項B、C錯誤;switch語句不一定需要使用default語句,選項D錯誤。本題答案為A選項。

14.C數(shù)據(jù)字典(DD)是指對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個元素做出詳細的說明。

15.B

16.B

17.B

18.A\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個字符的位置。

19.A

20.D

21.8888解析:C語言規(guī)定,以0開頭的整型常量為八進制。另外,在primf()函數(shù)中,%X表示以十六進制無符號形式輸出一個整數(shù),且十六進制中的ABCDEF為大寫字母。本題的輸出應該是八進制210的十六進制形式。將八進制轉(zhuǎn)換為十六進制,可以先將其轉(zhuǎn)換為二進制。因為1位八進制表示3位二進制,4位二進制表示1位十六進制。(210)8=(10001000)2=(88)16,故本題輸出為880

22.內(nèi)模式內(nèi)模式解析:內(nèi)模式又稱為物理模式,它給出了數(shù)據(jù)庫物理存儲結構與物理存取方法。

23.投影專門關系運算包括對單個關系進行垂直分解(投影操作)或水平分解(選擇操作)和對多個關系的結合(連接操作)等。

24.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中有兩重循環(huán)。在第一層for循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1,顯然在第一個空白處應該填入對角線上的元素即x[i][i],在第二重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應的上一行中同列和同列的前一列的元素相加,所以在第二個空白處應該填入x[i-1][j-1]+x[i-1][j]。

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

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

{

類型說明語句;

執(zhí)行語句;

}

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

26.swap(st);swap(s,t);解析:本題要在主函數(shù)中調(diào)用swap函數(shù)交換a、b的值,實現(xiàn)數(shù)據(jù)交換需要進行地址傳遞,所以函數(shù)的形參都應該是需要交換的數(shù)據(jù)的地址,程序中通過“s=&a;t=&b;”將指針變量s和t指向變量a、b的地址,因此,引用時直接引用指針變量s和t即可。

27.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

28.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內(nèi)存中以ASCII的形式存入,且從a到z依次遞增,所以可以直接用c>='a'&&c<='z'判斷是不是小寫字母;c!='\\n'判斷是用換行符結束循環(huán)。

29.邏輯設計邏輯設計解析:數(shù)據(jù)庫設計的四個階段為:需求分析、概念設計、邏輯設計和物理設計。

30.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值“BCD”并換行,依次執(zhí)行循環(huán)語句。

31.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求兩個矩陣的和只要將對應元素相加即可。

32.2424解析:本題考核的知識點是數(shù)組的定義和數(shù)組元素的引用。主函數(shù)中首先定義了一個長度為7的數(shù)組,然后用一個while循環(huán)引用數(shù)組的元素,當i大于7或者p[i]為偶數(shù)時,循環(huán)結束。顯然當i=2時,p12]=14為偶數(shù)時,循環(huán)結束,此時j的值為j=p[0]+p[1]=24;

33.69616。6,9,6,16。解析:賦值語句m=++x,x;是將逗號表達式的值賦給m,x和m的值都是6,賦值語句n=y+y++;是將y+y的值16賦給n,再執(zhí)行y的自加運算,y的值變?yōu)?。

34.2525解析:本題考查帶參數(shù)的宏的定義及相關運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。

35.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數(shù),所以本題中輸入空格就返回了'\\0\\,s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。

36.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

37.00解析:空格字符的ASCⅡ碼值為32,所以!c—o,那么0與任何值相與的結果都為0,可得b的值為0。

38.sd&km=id[j++]=ijv

39.(!feof(fp))或feof(fp):=0(!feof(fp))或feof(fp):=0

40.*ss!='\0'*ss!='\\0'解析:從字符串ss中找出某字符的方法是:從字符串ss的第一個字符開始,依次進行比較,若ss串的當前字符等于字符c,則i++;若ss串的當前字符和字符c不同,則繼續(xù)對ss串的下一個字符進行比較。本程序采用循環(huán)逐一比較的方式,找出某字符在字符串中出現(xiàn)的次數(shù)。汀語句的作用是判斷某字符與字符串中的當前字符是否相同。

41.D解析:由switch語句的格式排除A、C項,選項B中出現(xiàn)了兩個相同的case標號。

42.C解析:本題考查對數(shù)組的理解。C語言規(guī)定只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組。對于字符數(shù)組,可以將整個字符串一次輸入或輸出。所以,選項C)不正確。

43.A解析:本題考查的重點是對static變量以及全局變量的理解。static變量是函數(shù)或文件中的永久變量。本題中staticinta=2語句定義了一個static局部變量,編譯程序為其生成永久存儲單元,即調(diào)用函數(shù)fun時,其值一直都保存著,而不是使用函數(shù)外所賦的值(盡管開頭定義了一個同名的全局變量)。在主函數(shù)中,for循環(huán)進行兩次,第一次循環(huán)得f(3)=3+1+2=6,從而k+=f(3)=6,第二次循環(huán)由于static局部變量a變成了3,從而f(3)的值為7,故k+=f(3)=13,再執(zhí)行k+=a時,此時a的值為全局變量,其值為1,故k的值為14,選項A是正確的。

44.B

45.A解析:本題考查數(shù)據(jù)結構中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結點(即葉子結點)數(shù)為n0,而其度數(shù)為2的結點數(shù)為n2,則n0=n2+1。根據(jù)這條性質(zhì)可知,若二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數(shù)為n+1。因此,本題的正確答案是選項A。

46.B解析:++、--運算符在變量之前是先使變量的值加1或減1,然后再使用變量的值;如果在變量之后則先使用變量之前的值,再把變量的值加1或減1。顯然,程序中表達式“i--”的值為10,“++j”的值為2,所以最后輸出的值為10和2。

47.A解析:本題主要考查自加運算符(++、--)的使用。①前綴變量“++i,--i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達式的值參與運算;②后綴變量“i++、i--”,先使用此時的表達式的值參與運算,在使用i之后,再使i的值加1或者減1。題中計算表達式c=(a++)-1時先使用a的值進行計算,結果為c=2-1=1,然后將a的值加1,即執(zhí)行完此語句后a的值是3,表達式c+=-a+++(++B)等價于c=c+(-a++)+(++B),c=1+(-3)+3=1,此時a=4,b=3。

48.A解析:本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行。

49.B解析:本題定義了一維數(shù)組a和兩個指針變量。指針變量p的初值為第4個數(shù)組元素的地址,指針變量q的初值為,第6個數(shù)組元素的地址。*p+*q=4+6=10。

50.D解析:在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個關系。即關系模型是用表格數(shù)據(jù)來表示實體本身及其相互之間的聯(lián)系。本題的正確答案是D。

51.B

52.B解析:本題考查變量的定義方法。

53.D解析:數(shù)組名可以認為是一個存放地址值的指針變量,這個指針變量中的地址值不可改變。因此,可以認為數(shù)組名是一個地址常量,所以不能將它隨意改變。

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

55.C解析:第1個printf函數(shù),格式說明的個數(shù)是2,而輸出項的個數(shù)是3,所以對于多余的輸出項k不予輸出;第2個pfintf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。注意:本題考查printf函數(shù)的格式。①“%x”和“%o”分別表示以十六進制和八進制無符號型輸出整型數(shù)據(jù)(不帶前導Ox或O):②printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出:⑧格式說明與輸出項的個數(shù)也要相等,如果格式說明的個數(shù)少于輸出項的個數(shù),則對于多余的輸出項不予輸出。

56.B

57.D解析:用戶標識符與關鍵字相同時,程序在編譯過程中將給出出錯信息。注意:選項D)應該改為用戶標識符與關鍵字相同,程序在編譯時將給出出錯信息。注意:合法的標識符第一個字符必須為字母或下劃線。

58.C解析:本題考查的重點是拷貝字符串──使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組,字符串),其中'字符串'可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將'字符串'完整地復制到'字符數(shù)組'中,字符數(shù)組中原有的內(nèi)容被覆蓋。

使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復制過來的字符串。復制時,連同結束標志\'\\0\'一起復制;②不能用賦值運算符'='將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)處理。

另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組,字符串)。

功能是把'字符串'連接到'字符數(shù)組'中的字符串尾端,并存儲于'字符數(shù)組'中。'字符數(shù)組'中原來的結束標志,被'字符串'的第一個字符覆蓋,而'字符串'在操作中未被修改。

使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證'字符數(shù)組'定義得足夠大,以便容納連接后的目標字符串;否則,會因長度不夠而產(chǎn)生問題;②連接前兩個字符串都有結束標志\'\\0\',連接后'字符數(shù)組'中存儲的字符串的結束標志\'\\0\'被舍棄,只在目標串的最后保留一個\'\\0\'。

59.A

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

61.D\n因為x!=0,所以下列的循環(huán)不執(zhí)行,只執(zhí)行y++,最后結果為0。

\n

62.B本題考查函數(shù)的輸出格式。在printf函數(shù),格式說明符中有兩個“%”說明;將第1個%后面的字符原樣輸出,并不輸出其對應r的變量值。

63.C本題主要考查的是用二維數(shù)組首地址和

下標來引用二維數(shù)組元素的方法。通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數(shù)組:

012

234

456

簪由于數(shù)組的下標是從0開始的,所以二維數(shù)組元素a[i][j]表示的是二維數(shù)組a的第i+1行、第j+1列對應位置的元素。

64.Aauto用于聲明變量的生存期為自動,即將不在任何類、結構、枚舉、聯(lián)合和函數(shù)中定義的變量視為全局變量,而在函數(shù)中定義的變量視為局部變量。這個關鍵字通常會被省,因為所有的變量默認就是aut0的。register定義的變量告訴編譯器盡可能的將變量存在CPU內(nèi)部寄存器中而不是通過內(nèi)存尋址訪問以提高效率。static變量會被放在程序的全局存儲區(qū)中,這樣可以在下一次調(diào)用的時候還可以保持原來的賦值。這一點是它與堆棧變量和堆變量的區(qū)別。變量用static告知編譯器,自己僅僅在變量的作用范圍內(nèi)可見。這一點是它與全局變量的區(qū)別。當static用來修飾全局變量時,它就改變了全局變量的作用域。extern限制在了當前文件里,但是沒有改變其存放位置,還是在全局靜態(tài)儲存區(qū)。extem外部聲明,該變量在其他地方有被定義過。

溫馨提示

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

評論

0/150

提交評論