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

下載本文檔

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

文檔簡介

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.以下不完整的程序擬實現調用getmax函數,找出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”,________);}以下選項若填入下劃線處,不能實現上述功能的是()。

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語句的作用是結束整個循環的執行

B.只能在循環體內和swish語句體內使用break語句

C.在循環體內使用break語句或continue語句的作用相同

D.從多層循環嵌套中退出時,只能使用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",執行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

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

A.一個C語言程序只能實現一種算法

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

C.C程序可以由一個或多個函數組成

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

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

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");}}若要按以下形式輸出數組右上半三角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是指向某文件的指針,且尚未讀到文件末尾,則函數feof(fp)的返回值是()。

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

13.以下能正確定義一維數組的選項是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.下面哪種排序的平均比較次數最少()

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

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

A.被調用函數中可以不用return語句

B.被調用函數中可以使用多個return語句

C.被調用函數中,如果有返回值,就一定要有return語句

D.被調用函數中,一個return語句可以返回多個值給調用函數

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;則數值為9的表達式是()

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

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

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函數的功能是判斷形參a是否為素數,是素數,函數返回1,否則返回0。請填空。

intisprime(inta)

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

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

[9];

25.以下程序的功能是將寧符串s中的數字字符放入d數組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf4568h,執行程序后輸出:123456。請填空。

#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.如果調用fopen函數不成功,則函數返回【】;如果調用fclose函數不成功,則函數返回【】。

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

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

30.下面程序的功能是實現變量x、y內容交換,請填空。

#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.一棵二叉樹第六層(根節點為第一層)的節點數最多為______。

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

voidfun(int*n)

{while((*n)--);

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

}

main()

{inta=1000;

fun(&a);

}

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

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

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

main()

{

charc1,c2;

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

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

printf("\n");

}

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

39.以下程序調用函數swap將指針s和t所指單元(a和B)中的內容交換,請填空。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;}

40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請填空以實現拷貝。(注:不使用逗號表達式)

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);}執行后的輸出結果是()。

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.下述關于數據庫系統的敘述中正確的是______。

A.數據庫系統減少了數據冗余

B.數據庫系統避免了一切冗余

C.數據庫系統中數據的一致性是指數據類型的一致

D.數據庫系統比文件系統能管理更多的數據

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.下列二維數組初始化語句中,不正確的是()。

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.函數B.過程C.字符D.語句

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

A.1B.30C.1-2D.死循環

49.現有如下程序段#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);}執行后輸出的結果是()。

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

54.若已包括頭文件<string.h>且已有定義chars1[18],s2={"ABCDE"}和inti,現要將字符串“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.有以下函數char*fun(char*p){returnp;}該函數的返回值是______。

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.因為數組長度與初值的個數不相同,所以此語句不正確

58.以下程序中函數sort的功能是對a數組中的數據進行由大到小的排序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);}執行后輸出結果是

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

60.若有下列定義,則對a數組無素地址的正確引用是()。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);

}

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

A)20,4B)10,2

C)20,1D)10,4

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

A.

B.

C.

D.

71.

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

A.函數調用可以嵌套和遞歸

B.函數調用可以作為一個函數的實參

C.函數調用可以出現在表達式中

D.函數調用可以作為一個函數的形參

73.

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

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語言允許函數的遞歸調用

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

C.有些遞歸程序是不能用非遞歸算法實現的

D.C語言中不允許在函數中再定義函數

79.有以下程序:

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

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

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

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

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

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

參考答案

1.C

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

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

4.B

5.A題干中,定義一個二維字符數組v。然后通過for循環,輸入4個字符串welcome、you、to、beijing,將其分別存放在v的4個元素中。數組v是存放4個字符串的二維數組;“**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程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法。

8.D

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

10.C

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

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

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

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

15.D

16.D

17.A

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

switch語句的語法格式為:

switch(表達式)

{

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

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

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

default:語句組n+1;

}

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

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

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

19.B

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

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

22.對象類

23.1B1B解析:在C語古中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內存中只占1個字節,而整型是2個字節.字符型變量中所有的數值是它所表示字符的ASCII碼值.ASCII碼中的一些相關字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個字符型變量a和b,然后分別使用getchar()和scanf()函數讀取輸入的字符'B'和十進制整數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是素數,返回值為0。如果a不能被i整除,則a不是素數,返回值為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];定義了兩個字符型數組,可以放入80個字符。gets函數是C語言提供的一個專門用于讀字符串的函數,它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數字字符,因為字符數據在內存中以相應的ASCII碼存放,所以只需比較相應的ASCII碼值是否在48(\'0\'的ASCII代碼)與57(\'9\'的ASCII代碼)之間,或者直接與\'0\',\'9\'進行比較,如果是數字字符則將此字符存入d數組中,不是則繼續進行下一字符的比較,直至s結束(即\'\\0\'的出現)。將'\\0'字符作為字符串d結束標志,最后調用puts函數輸出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)循環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時,判斷條件不滿足,退出循環。

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

28.10410\r\n4解析:結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。int占2個字節,float占4個字節,共用體變量所占的內存長度等于最長的成員的長度。所以,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解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

32.1010解析:題目中的fun()函數直接調用了自身,所以它是遞歸函數。函數中只有一條if語句,意思是:若n為0,則返回x所指內容(x[0]等價于*x),否則返回x所指內容加上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時,函數將無限循環遞歸調用下去,因為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循環的條件為即當*n非零時執行循環,(*n)一是先使用*n的值再對*n減1,結束while循環后*n的值為-1。++(*n)是先對*n加1再使用*n的值,-1+1=0,輸出*n的值即輸出0。

35.軟件開發

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

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

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

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

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

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

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

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

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

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

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

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

47.A

48.C

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論