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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.以下程序的輸出結果是().A.A.0B.29C.31D.無定值

2.有以下程序:main{inta[]=(2,4,6,8,10},y=0,x,*P;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n,y");}程序運行后的輸出結果是()。A.10B.11C.14D.15

3.以下不完整的程序擬實現(xiàn)調(diào)用getmax函數(shù),找出4個變量中最大的一個:#include<stdio.h>intgetmax(intx,inty){returnx>yx:y;}voidmain(){inta,b,c,d,mx;scanf(“%d%d%d%d”,&a,&b,&c,&d);printf(“max=%d\n”,________);}以下選項若填入下劃線處,不能實現(xiàn)上述功能的是()。

A.getmax(getmax(getmax(a,b),c),d)

B.getmax(getmax(a,b),getmax(c,d))

C.getmax(a,getmax(b,getmax(c,d)))

D.mx=(getmax(a,b),getmax(c,d))

4.以下敘述正確的是

A.continue語句的作用是結束整個循環(huán)的執(zhí)行

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

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

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

5.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序運行時輸入welcomeyoutobeijing并按<Enter>鍵,則輸出結果是()。

A.w,youjing,o

B.welcome,you,jing,to

C.w,you,eeijing,u

D.w,xelcome,eeijing,u

6.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

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

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個c函數(shù)可以單獨作為一個C程序文件存在

8.在排序方法中,元素比較次數(shù)與元素的初始排列無關的是()

A.Shell排序B.歸并排序C.直接插入排序D.選擇排序

9.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應填入的是()。A.i-1B.iC.i+1D.4一i

10.

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

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

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

C.c=getchar();

D.*c=“string”;

12.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

13.以下能正確定義一維數(shù)組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

14.下面程序運行后的輸出結果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}

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

15.下面哪種排序的平均比較次數(shù)最少()

A.插入排序B.選擇排序C.堆排序D.快速排序

16.在一個被調(diào)用函數(shù)中,關于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個return語句可以返回多個值給調(diào)用函數(shù)

17.設有以下語句:intx=10;x+=3+x%(3),則x的值是()。

A.14B.15C.11D.12

18.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

19.判斷一個棧ST(最多元素為Maxsize)為空的條件是()。

A.ST->top!==一1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

20.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

二、2.填空題(20題)21.數(shù)據(jù)結構分為邏輯結構和存儲結構,循環(huán)隊列屬于______結構。

22.可以把具有相同屬性的一些不同對象歸類,稱為【】。

23.已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>。則輸出結果是______。

#include<stdio,h>

main()

{

chara,b;

a=geCchar();scanf("%d“,&b);

a=a-'A'+‘0';b=b*2;

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

}

24.以下isprime函數(shù)的功能是判斷形參a是否為素數(shù),是素數(shù),函數(shù)返回1,否則返回0。請?zhí)羁铡?/p>

intisprime(inta)

for(i=2;i<=a/2;i++)

if(a%i==0)[8];

[9];

25.以下程序的功能是將寧符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf4568h,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

26.下面程序的運行結果是()。#include<stdio.h>main(){inta,b,c,n;a=2;b=0;c=1;n=1;while(n<=3){c=c*a;b=_b+c;++n;}printf("b=%d",B);}

27.如果調(diào)用fopen函數(shù)不成功,則函數(shù)返回【】;如果調(diào)用fclose函數(shù)不成功,則函數(shù)返回【】。

28.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

29.己定義charch='$';inti=l,j;,執(zhí)行j=!ch&&ii++以后,i的值為【】。

30.下面程序的功能是實現(xiàn)變量x、y內(nèi)容交換,請?zhí)羁铡?/p>

#defineEXCHANGE(a,b,c){a=b;b=c;c=a;}

main()

{intx=10,y=8,z;

【】

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

31.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

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

intfun(int*x,intn)

{if(n==0)returnx[0];

elsereturnx[0]+fun(x+1,n-1);

}

main()

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

printf("%d\n",fun(a,3));}

33.一棵二叉樹第六層(根節(jié)點為第一層)的節(jié)點數(shù)最多為______。

34.下列程序的輸出結果是【】。

voidfun(int*n)

{while((*n)--);

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

}

main()

{inta=1000;

fun(&a);

}

35.軟件工程研究的內(nèi)容主要包括:【】技術和軟件工程管理。

36.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。

37.以下程序運行后的輸出結果是【】。

main()

{

charc1,c2;

for(c1='0',c2='9';c1<c2;c1++,c2--)

printf("%c%c",c1,c2);

printf("\n");

}

38.軟件測試按功能劃分的方法劃分,通常分為【】測試方法和黑盒測試方法。

39.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交換,請?zhí)羁铡ain(){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;}

40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

三、1.選擇題(20題)41.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}執(zhí)行后的輸出結果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

42.兩次運行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

43.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

44.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4},y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

}

程序的運行結果是

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

45.以下程序的輸出結果是_______。main(){inti;for(i=1;i<6;i++){if(i%2)(printf("#");continue;}printf("*");}printf("\n");}

A.#*#*#B.#####C.*****D.*#*#*

46.下列二維數(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)};

47.C語言程序的基本單位是()

A.函數(shù)B.過程C.字符D.語句

48.下列程序段的輸出結果是______。intx=3;do{printf("%d",x-=2);}while(!(--x));

A.1B.30C.1-2D.死循環(huán)

49.現(xiàn)有如下程序段#include"stdio.h"#include"string.h"main(){chara[]="acfijk";/*這里是有序的字符序列*/charb[]="befijklqswz";/*這里是有序的字符序列*/charc[80],*p;inti=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j])c[k++]=a[i++];elseif(a[i]>b[j])c[k++]=b[j++];else{c[k++]=b[j++];i++;}}while(a[i]=='\0'&&b[j]!='\0')c[k++]=b[j++];while(a[i]!=,'\0'&&b[j]=='\0')c[k++]=a[i++];c[k]='\0';puts(c);}則輸出結果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

50.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是

A.isupper?

B.′A′<=c<=′Z′

C.′A′<=c&&c<=′Z′

D.c<=(′z′-32)&&(′a′-32)<=c

51.有以下程序structSTU{charnum[10];floatscore[3];};main(){stmctSTUs[3]={{“20021”,90,95,85},{“20022”,95,80,75},{“20023”,100,95,90}},*p=s;inti;floatsum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf(“%6.2f\n”,sum);}程序運行后的輸出結果是

A.260B.270C.280D.285

52.若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3,(int)(x+y)%2/4的值是

A.2.5B.2.75C.3.5D.0

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

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

54.若已包括頭文件<string.h>且已有定義chars1[18],s2={"ABCDE"}和inti,現(xiàn)要將字符串“ABCDE”賦給s1,下列語句錯誤的是()。

A.strcpy(s1,s2)

B.strcpy(sl,"ABCDE");

C.s1="ABCDE";

D.for(i=0;i<6;i++)s1[i]=s2[i];

55.有以下函數(shù)char*fun(char*p){returnp;}該函數(shù)的返回值是______。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

56.下面程序的輸出結果是#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",*p+9);}

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

57.對以下說明語句的正確理解是inta[10]={6,7,8,9,10};

A.將5個初值依次賦給a[1]至a[5]

B.將5個初值依次賦給a[0]至a[4]

C.將5個初值依次賦給a[6]至a[10]

D.因為數(shù)組長度與初值的個數(shù)不相同,所以此語句不正確

58.以下程序中函數(shù)sort的功能是對a數(shù)組中的數(shù)據(jù)進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結果是

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

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

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

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

59.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結果是

A.58B.56C.45D.24

60.若有下列定義,則對a數(shù)組無素地址的正確引用是()。inta[5],*p=a;

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

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

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結果是()。A.A.AfternoonB.fternoonC.MorningD.orning

62.

63.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

64.下面結構體的定義語句中,錯誤的是()。

A.structord{intx;intY;intz;}structorda;

B.structord{intx;imY;imz;};structorda;

C.structord{intx;intY;intZ;}a;

D.struct{intx;intY;intz;}a;

65.

66.有以下程序:#include〈stdio.h〉intabe(intu,intv);main{inta=24,b=16,c;c=abc(a,b);printf(“%d\n”,c);}intabc(intu,intv){intw;while(v){w=u%v;u=v;v=w;)returnu;}輸出結果是()。A.6B.7C.8D.9

67.

68.設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句

if(a<b)

if(c==d)y=0;

Elsey=1;

該語句所表示的含義是()。

A.

B.

C.

D.

69.有以下程序:

voidmain()

{

inti=10,j=1;

printf("%d,%d\n",2*i--,++j*2);

}

執(zhí)行后輸出的結果是()。

A)20,4B)10,2

C)20,1D)10,4

70.以下定義語句中正確的是()。

A.

B.

C.

D.

71.

72.若已定義的函數(shù)有返回值,則以下關于該函數(shù)調(diào)用的敘述中錯誤的是()。

A.函數(shù)調(diào)用可以嵌套和遞歸

B.函數(shù)調(diào)用可以作為一個函數(shù)的實參

C.函數(shù)調(diào)用可以出現(xiàn)在表達式中

D.函數(shù)調(diào)用可以作為一個函數(shù)的形參

73.

74.若i、j已定義成int型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。

for(i=6;i>0;i--)

for(j=0;j<4;j++){…}A.A.20B.24C.25D.30

75.

76.

77.有以下程序已知字母A的ASCIl碼為65,程序運行后的輸出結果是()。

A.E。68B.D,69C.E,DD.輸出無定值

78.在下列結論中,只有一個是錯誤的,它是()。

A.C語言允許函數(shù)的遞歸調(diào)用

B.C語言中的continue語句,可以通過改變程序的結構而省略

C.有些遞歸程序是不能用非遞歸算法實現(xiàn)的

D.C語言中不允許在函數(shù)中再定義函數(shù)

79.有以下程序:

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

A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,

80.用數(shù)組名作為函數(shù)調(diào)用的實參,則傳遞給形參的是()。

A.數(shù)組中所有元素的值B.數(shù)組的第一個數(shù)據(jù)C.數(shù)組的首地址D.數(shù)組元素的個數(shù)

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:將m(1≤m≤10)個字符串連接起來,組成一個新串,放入pt所指字符串中,例如,把2個字符串a(chǎn)bc、CD串聯(lián)起來,結果是abcCD。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,函數(shù)fun()的功能是將s所指字符串中下標為偶數(shù)同時ASCII值為奇數(shù)的字符刪除,s所指字符串中剩余的字符形成的新字符串存放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符C的ASCⅡ值為奇數(shù),在數(shù)組中的下標為偶數(shù),因此必須刪除;而字符1的ASCⅡ值為奇數(shù),在數(shù)組中的下標為奇數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是“BDH2345”。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序::

參考答案

1.C

2.C由題目的語句P=&a[1]可知,P指向a數(shù)組中下標為1的元素“4”,又因為P為指針變量,所以P[x]與*(p+x)等價,因而在for循環(huán)語句中,第一次循環(huán)P[1]指向a數(shù)組中下標為2的元素“6”,第二次循環(huán)p[2]指向a數(shù)組中下標為3的元素“8”,所以y=6+8=14,因而選項C為正確答案。

3.Dgetmax函數(shù)接收兩個整型變量x、y,使用條件運算符返回x和y中的較大值。main函數(shù)首先輸入a、b、c、d4個整數(shù)值,然后通過調(diào)用getmax函數(shù),輸出它們的最大值。假設x、y是整數(shù),選項A中,首先執(zhí)行“getmax(a,b)”,返回a、b中的較大值X,再執(zhí)行“getmax(x,c)”,返回x、c中的較大值y,最后執(zhí)行“getmax(y,d)”,返回y、d中的較大值,滿足題意,正確;選項B中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行“getmax(x,y)”,返回x、y中的較大值,正確;選項C中,首先執(zhí)行“getmax(c,d)”,返回c、d的較大值X,再執(zhí)行“getmax(b,x)”,返回b、x中的較大值y,最后執(zhí)行“getmax(a,y)”,返回a、y中的較大值,正確;選項D中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行逗號表達式“(x,y)”,返回值為7,不滿足題意。故本題答案為D選項。

4.B

5.A題干中,定義一個二維字符數(shù)組v。然后通過for循環(huán),輸入4個字符串welcome、you、to、beijing,將其分別存放在v的4個元素中。數(shù)組v是存放4個字符串的二維數(shù)組;“**v”表示第1個字符串的第一個字符“w”;“*(v+1)”指向第2個字符串“you”;“v[3]+3”指向第4個字符串的第3個字符開始后的整個字符串“jing”;“*(v[2]+1)”表示第3個宇符串的第2個字符“o”。故本題答案為A選項。

6.D

7.A答案A

解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實現(xiàn)多種算法。

8.D

9.B本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標相同,所以j=i。

10.C

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

12.D本題考查leon(tp)函數(shù),其功能是:測試所指的文件的位置指針是否已達到文件尾,如果已達到文件尾,則函數(shù)返回非0值;否則返回0,表示文件未結束。

13.B解析:選項A定義數(shù)組時省略了長度,而C語言中規(guī)定,只有在定義并同時進行初始化時,數(shù)組的長度才可以省略,數(shù)組的長度為初始化時候的成員個數(shù),故選項A錯誤;在C語言中規(guī)定,數(shù)組的長度必須是一個整數(shù)或整型常量表達式,故選項C不正確:定義時數(shù)組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。

14.B解析:在main函數(shù)中定義了一個structabc類型的數(shù)組,同時分別利用{1,2,3}及{4,5,6}對數(shù)組中兩個元素進行初始化。在該結構體,依次對其中的a,b,c三個變量進行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

15.D

16.D

17.A

18.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應該明白switch語句的語法格式:

switch語句的語法格式為:

switch(表達式)

{

case常量表達式1:語句組1;

case常量表達式2:語句組2;

case常量表達式n:語句組n;

default:語句組n+1;

}

另外,以下幾點關于switch語句的重點:

①系統(tǒng)在執(zhí)行時計算開關表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后執(zhí)行后面相應的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。

一般而言,在多分支結構中總會出現(xiàn)'意外'的情況,這時均可歸入default程序段,作統(tǒng)一的處理。default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。

19.B

20.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達式,(p+9)來引用。因此,當指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

21.存儲或物理或存儲結構或物理結構存儲或物理或存儲結構或物理結構解析:數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結構(也稱數(shù)據(jù)的物理結構)。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍h(huán)隊列應當是物理結構。

22.對象類

23.1B1B解析:在C語古中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內(nèi)存中只占1個字節(jié),而整型是2個字節(jié).字符型變量中所有的數(shù)值是它所表示字符的ASCII碼值.ASCII碼中的一些相關字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個字符型變量a和b,然后分別使用getchar()和scanf()函數(shù)讀取輸入的字符'B'和十進制整數(shù)33到a和b中,因為a-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結果是:1B。

24.如果a能被i整除,則a是素數(shù),返回值為0。如果a不能被i整除,則a不是素數(shù),返回值為1。

25.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或\'9\'>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:本題中,chars[80],d[80];定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是C語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應的ASCII碼存放,所以只需比較相應的ASCII碼值是否在48(\'0\'的ASCII代碼)與57(\'9\'的ASCII代碼)之間,或者直接與\'0\',\'9\'進行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結束(即\'\\0\'的出現(xiàn))。將'\\0'字符作為字符串d結束標志,最后調(diào)用puts函數(shù)輸出d。所以在空格處應填入比較語句s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或9\'>>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]。

26.BB解析:分析程序可知,n的初始值為1,因此。while(n<=3)循環(huán)3次。第1次:c=c*a=2;b=b+C=2;n=2。第2次:c=c*a=4;b=b+c=6;n=3。第3次:c=c*a=8;b=b+e=14。當n=4時,判斷條件不滿足,退出循環(huán)。

27.NULL或0EOF或-1NULL或0\r\nEOF或-1解析:如果fopen()函數(shù)調(diào)用不成功,則返回一個空指針值NULL(0);如果fclose()函數(shù)調(diào)用不成功,則返回EOF(-1)。所以本題的兩個空應分別填NULL和EOF。

28.10410\r\n4解析:結構體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

29.11解析:本題中的ch是一個字符變量,其初始值為'$'(非0值即為真),所以!ch的結果為假,此時&&右邊的i++被“短路”,即不會被計算。由此可見,i的值不會改變,故本題應該填1。

30.EXCHANGE(zxy)或EXCHANGE(zxy);EXCHANGE(z,x,y)或EXCHANGE(z,x,y);

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

32.1010解析:題目中的fun()函數(shù)直接調(diào)用了自身,所以它是遞歸函數(shù)。函數(shù)中只有一條if語句,意思是:若n為0,則返回x所指內(nèi)容(x[0]等價于*x),否則返回x所指內(nèi)容加上fun(x+1,n-1)。即,當n>0時,fun(x,n)=x[0]+fun(x+1,n-1)=x[0]+x[1]+fun(x+2,n-2)=…=x[0]+x[1]+…+x[n];當n=0時,fun(x,n)=x[0];當n<0時,函數(shù)將無限循環(huán)遞歸調(diào)用下去,因為n-1下去永遠也不會等于0。所以本題中fun(a,3)=a[0]+a[1]+a[2]+a[3]=12+3+4=10。故應該填10。

33.在二叉樹的第k層上,最多有2k-1(k>1)個結點。

34.00解析:while循環(huán)的條件為即當*n非零時執(zhí)行循環(huán),(*n)一是先使用*n的值再對*n減1,結束while循環(huán)后*n的值為-1。++(*n)是先對*n加1再使用*n的值,-1+1=0,輸出*n的值即輸出0。

35.軟件開發(fā)

36.buf的首地址buf的首地址解析:考查fsets()函數(shù)的功能,f8ets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:f8ets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fsets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結束標志,并以buf作為函數(shù)值返回。

37.09182736450918273645解析:題目中為for循環(huán)定義了兩個字符型循環(huán)變量c1和c2,循環(huán)開始時分別初始化為字符‘0’和‘9’,然后每次循環(huán)結束給c1增1、c2減l,循環(huán)條件為c1<c2,即讓c1的值依次為‘0’、‘1’、‘2’…,c2的值依次為‘9’、‘8’、‘7’…,直到兩個數(shù)相遇時結束循環(huán)。又因為該循環(huán)的循環(huán)體每次按字符形式輸出c1和c2的值。所以最終的輸出結果為:0918273645。

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

39.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即可。

40.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現(xiàn)。

41.C解析:執(zhí)行while循環(huán),使指針變量ps指向字符串“xyz”的字符串結束標志,然后執(zhí)行for循環(huán),先執(zhí)行ps--,使ps指向字符‘z’,故puts(ps)輸出結果為z;再次執(zhí)行ps--,使ps指向字符‘y’,故puts(ps)輸出結果為yz;再次執(zhí)行ps--,使ps指向字符‘x’,故puts(ps)輸出結果為xyz,退出循環(huán)。所以,C選項為所選。

42.A解析:本題考查ifelse語句。首先scanf函數(shù)通過鍵盤讀入x的值。當x=3時,第一個if語句,先判斷條件,取x的值3和2比較,然后將x的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語句,輸出x的值4。當x=1時,第一個if語句,先判斷條件,取x的值1和2比較,然后將x的值加1(x的值變?yōu)?),發(fā)現(xiàn)條件不成立,執(zhí)行下列的else語句,先輸出x的值2,再將x的值減1。

43.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應用所共享,特別是在網(wǎng)絡發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡的結合擴大了數(shù)據(jù)關系的應用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。這里所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應保持相同的值,而數(shù)據(jù)的不一致性指的是同一個數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。

44.D解析:在程序中指針變量p初始指向a[3],執(zhí)行p減1后,p指向a[2],語句y=*p的作用是把a[2]的值賦給變量y,所以輸出為y=3。

45.A解析:i從i到5循環(huán)5次,i為1時,滿足條件,打印輸出“#”;i為2時,條件為假,打印輸出“*”。也就是說,當i為奇數(shù)時,條件為真,程序打印輸出“#”,否則,輸出:“*”。

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

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

47.A

48.C

49.D解析:這個題目的功能是實現(xiàn)兩個有序字符串的合并,合并成一個新的有序的字符串。

50.B解析:在本題中,選項B)實際是先計算關系表達式'\'A\'<=c'的值是0還是1,再比較該值與字符\'Z\'之間的大小關系,顯然不能實現(xiàn)題目所要求的功能,而選項A)、C)、D)都可以。

51.B解析:程序中首先定義了一個結構體,其成員為一字符數(shù)組和一浮點型數(shù)組。在main()首先定義了一個結構體數(shù)組并初始化。接下來在for循環(huán)中遍歷了結構體數(shù)組中的第一個元素中數(shù)組成員即{20021“,90,95,85”}循環(huán)結果為90+95+85=270最后sum為270,又輸出格式為“%6.2f\\n”要求保留兩位小數(shù)故最后輸出為270.00。

52.A解析:x+y的值為實型7.200000,經(jīng)強制類型轉化成整型7。a%3的值為1,1*7的值為7,7%2值為1。1/4的值為0,而非0.25,因而為兩個整數(shù)相除的結果為整數(shù),舍去小數(shù)部分。與實型x相加,最終得結果為2.500000。

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

54.C解析:數(shù)組名s1是代表s1數(shù)組首地址的地址常量,而不是變量,因為“=”左邊不能出現(xiàn)常量,因此s1=“ABCDE”的方法是錯誤的。

55.B解析:p本身就是一個字符型指針變量,返回p也就是返回變量p中存放的地址值。

56.C解析:此題考查了指針引用一維數(shù)組元素的方法。*p+9因為運算符“*”的優(yōu)先級高于“+”,所以輸出結果為p指向的元素1,然后加9,值為10。

57.B解析:本題中,表達式將5個初值分別賦給a[0]至a[4],系統(tǒng)自動給后面的元素a[5]至a[9]賦0。

58.C解析:C語言中,實參變量和形參變量之間的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)參也要遵循這一規(guī)則,調(diào)用函數(shù)不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。

59.D解析:在主函數(shù)中首先定義了一個數(shù)組p并初始化,在while后面括號里的表達式中,i初值為0,當p[i]為偶數(shù)時,P[i]%2等于0,根據(jù)“&&”運算符的規(guī)則,其表達式為假退出循環(huán),顯然當i=2時,p[i]=14為偶數(shù),此時while后面括號里的表達式的值為假,退出循環(huán),此時k=p[0]+p[1],即k=11+13。所以最后輸出k為24。

60.D解析:本題考查如何引用數(shù)組元素的地址。選項A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2]、

溫馨提示

  • 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

提交評論