2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計_第1頁
2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計_第2頁
2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計_第3頁
2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計_第4頁
2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數,則散列地址為1的元素有()個。

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

2.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

3.下述程序執(zhí)行的輸出結果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&

4.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

5.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

6.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環(huán),從鍵盤輸入的數據應該是()。A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數

7.某二叉樹共有7個結點,其中葉子結點只有l(wèi)個,則該二叉樹的深度為(假設根結點在第1層)()。

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

8.以下函數不能用于向文件中寫入數據的是()。

A.hellB.fwriteC.fputcD.fprintf

9.若有定義語句:“intyear=2009,*p=&year;”,以下不能使變量year中的值增至2010的語句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

10.

11.若有定義語句:char*s1="OK",*s2="ok";,以下選項中,能夠輸出"OK"的語句是A.A.if(strcmp(s1,s2)==0)puts(s1);

B.if(strcmp(s1,s2)!=0)puts(s2);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)!=0)puts(s1);

12.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的運行結果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

13.若有定義inta=5,b=7;,則表達式a%=(b%2)運算后,a的值為()。

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

14.

15.從堆中刪除一個元素的時間復雜以為____。

A.O(1)B.O(log2n)C.O(n)D.O(nlog2n)

16.數據庫DB、數據庫系統(tǒng)DBS、數據庫管理系統(tǒng)DBMS之間的關系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系

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

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數據與相關文檔的集合

18.數據的存儲結構是指()。

A.數據所占的存儲空間

B.數據的邏輯結構在計算機中的存放形式

C.數據在計算機中的順序存儲方式

D.存儲在計算機外存中的數據

19.以下能正確定義一維數組的選項是()。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

20.在一個無向圖中,所有頂點的度數之和等于所有邊數的()倍。

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

二、2.填空題(20題)21.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

22.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

23.若a的值為1,則表達式!a‖++a的值是______。

24.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現程序中的錯誤。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

26.【】是從二維表列的方向進行的運算。

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

#include<stdio.h>

main()

{ihtx=0210;printf("%x\n",x);

}

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

inti=9;

prinff("%o\n",i);

29.下面程序中函數fun的功能是:找出一維數組元素中的最大值和它所在的下標,并將最大值和其下標通過形參傳回。數組元素中的值已在主函數中賦予。主函數中x是數組名,n是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。請?zhí)羁铡?/p>

#include<stdlib.h>

#include<sldio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];*d=0;

for(i=0;【】;i++)

if(*max<【】)

{*max=a[i];*d=i;}

}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max.&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

30.數據元素之間______的整體稱為邏輯結構。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

32.某二義樹中度為2的結點有18個,則該二叉樹中有______個葉子結點。

33.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。

34.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數strcmp(s1,s2)后,結果是______。

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

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

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

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,D);

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

}

37.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

38.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

39.用高級語言編寫的程序稱為【】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過編譯程序一次翻譯產生目標程序,然后執(zhí)行。

40.設函數findbig已定義為求3個數中的最大值,以下程序將利用函數指針調用findbig函數。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

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

}

三、1.選擇題(20題)41.下列程序的運行結果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

42.在關系模型中,()。

A.為了建立一個關系,首先要構造數據的邏輯關系

B.表示關系的二維表中各元組的每一個分量還可以分成若干數據項

C.一個關系的屬性名表稱為關系模式

D.一個關系可以包括多個二維表

43.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

44.有以下字符串,說明表達式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

45.有以下程序:#include<stdio,h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[1];a[i]=a[j];a[j]=t;}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa+2,5);for(i=0;i<10;i++)prinff("%d,",aa[i]);prinff("\n");程序運行后的輸出結果是()。

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

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

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

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

46.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}執(zhí)行后輸出結果是()。

A.賦初值的字符串有錯B.6,7C.5,6D.6,6

47.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

48.fwrite函數的一般調用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

49.需求分析最終結果是產生

A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告

50.以下敘述中正確的是______。

A.C語言比其他語言高級

B.C語言可以不用編譯就能被計算機識別執(zhí)行

C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式

D.C語言出現的最晚,具有其他語言的一切優(yōu)點

51.有以下程序#include<stdio.h>intfun(inta,intB){if(b=0)returna;elsereturn(fun(--a,--B));}main(){pdntf("%d\n",fun(4,2));}程序的運行結果是()。

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

52.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;1++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);程序運行后的輸出結果是______。

A.012B.123C.234D.345

53.編制一個好的程序,首先要保證它的正確性和可靠性,還應強調良好的編程風格,在書寫功能性注釋時應考慮

A.僅為整個程序作注釋B.僅為每個模塊作注釋C.為程序段作注釋D.為每個語句作注釋

54.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

則以下函數調用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

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

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

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

C.how'are'you

D.ahow'are'y\bou

56.若有以下說明和定義:typedefint*INTEGER;INTEGERp,*q;以下敘述正確的是()A.p是整型變量

B.p是基類型為整型的指針變量

C.q是基類型為整型的指針變量

D.程序中可用INTEGER代替int類型名

57.假定所有變量已正確說明,下列程序段運行后,x的值是()a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

58.有以下程序#include<stdio.h>voidmain(){chars[]={"01aXy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]<='a'&&s[i]>='z')n++;printf("%d\n",n);}程序運行后的輸出結果是()。

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

59.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

60.有以下程序:intx=1,y=2;voidfunl(){x=3;y=4;}voidfun2(intx,inty){printf("%d,%d,\n",x,y);}main(){funl();printf("%d,%d,"x,y);fun2(5,6);}程序的運行結果是()

A.1,2,3,4B.1,2,5,5C.3,4,5,6D.3,4,1,2

四、選擇題(20題)61.

62.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

63.若二維數組a有m列,則在a[i][j]前的元素個數為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

64.

65.結構化程序設計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

66.

67.

68.有以下程序:

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

A.一263B.2C.0D.一26

69.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數為()。

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

70.

71.28.以下敘述中錯誤的是

A.對于float類型數組,不可以直接用數組名完成對數組進行整體輸入或輸出

B.數組名代表的是數組所占存儲區(qū)的首地址,其值是常量,是不可改變的

C.當執(zhí)行程序時,數組元素的下標超出所定義的下標范圍時,系統(tǒng)將給出“下標越界”的出錯信息

D.可以通過賦初值的方式確定數組元素的個數

72.

73.

74.以下函數實現按每行8個輸出W所指數組中的數據:

在橫線處應填人的語句是()。

A.if(i/8==0)printf(”\n”);

B.if(i/8==O)continue;

C.if(i%8==0)prinff(’’\n”);

D.if(i%8==0)continue;

75.

76.

77.下列可作為C語言賦值的語句的是()。

A.x一3,y=5B.a=b=6C.i--;D.a,c

78.樹是結點的集合,它的根結點數目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

79.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()

A.便于用戶,開發(fā)人員進行理解和交流

B.反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據

C.作為確認測試和驗收的依據

D.便于開發(fā)人員進行需求分析

80.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.除D.并

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,輸入opdye,則應輸出deopy。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charc;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

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

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=c;

}

}

voidmain

{

charstr[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\n\nBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%s",str);

}

六、程序設計題(1題)82.請編一個函數fun(ohlr*str),該函數的功能是把字符串中的內容逆置。

例如,字符串中原有的字符串為asdf9,則調用該函數后,串中的內容為9fdsa。

請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填人所編寫的若干語句。

試題程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

參考答案

1.D

2.A當執(zhí)行gets(ss)后,ss數組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數組后面,執(zhí)行完后SS數組為ABC6789,故選擇A選項。

3.Astrcpy實現的功能是復制,該操作把are復制到a中,a[0][3]='&',且strcpy(a[1],"you")把you復制到a[1]中,故輸出a為“are&you”。

4.A本題考查簡單的賦值運算,在程序中c=(a-=am5),先算括號中的a-=a-5=5,所以c=5,再計算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選擇A。

5.B解析:sizeof函數是取變量所占的存儲空間的字節(jié)數,標識a代表常量121;constb=12;,其中數據類型可以缺省,默認為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節(jié)數均為2,2,2。

6.D本題主要考查do—while循環(huán),因為變量t的初始值等于1,經過第一次do-while循環(huán)后,執(zhí)行t=t-1這條語句一次,所以變量t的值為-1,判斷關系表達式t!=n是否成立,如果關系表達式成立,則執(zhí)行第二次循環(huán),如果關系表達式不成立,退出循環(huán)。由此可見,只要輸入變量n的值為負奇數,則一定會使t==n成立,故退出do-while循環(huán)。

7.D根據二叉樹的基本性質3:在任意一棵二叉樹中,度為0的葉子結點總比度為2的結點多一個,因此本題中度為2的結點為l一1=0個,據此可以知道本題目中的二叉樹的每一個結點都有一個分支,所以共7個結點共7層,即深度為7,選擇D)。

8.Aftell是返回文件當前指針。

9.D

10.A

11.D解析:strcmp(s1,s2)的作用是比較字符串s1和s2。參數str1,str2如果相同,則返回0,如果str1大于str2則返回一個正整數,如果str1小于str2則返回一個負整數。本題中s1,s2不相同,A)選項不會輸出任何字符,B)選項輸出ok,C)選項不輸出任何字符,D)選項會輸出OK。

12.B在函數fun中,前一個while循環(huán)的作用是,如果形參指針t所指內容不為0,則讓t增1,直到它指向0;后一個while循環(huán)的作用是,將s所指內容賦給t所指地址,然后兩者同時增1,直到賦給t的內容為0。由此可見,函數fun的作用就是將形參s所指字符串連接到形參t所指字符串末尾,相當于庫函數strcat。主函數中使用fun將數組aa中的字符串連接到數組ss中原有字符串之后,所以執(zhí)行完后,ss中的字符串為“accbbxxyy”。程序最后輸出的結果是accbbxxyy,bbxxyy。故本題答案為B選項。

13.A解析:本題考查'%'運算符的使用。運算符'%'要求兩個運算對象都為整型,其結果是整數除法的余數。本題中表達式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

14.B

15.B

16.CC。【解析】數據庫系統(tǒng)(DBS)由數據庫(DBS)、數據庫管理系統(tǒng)(DBMS)、數據庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

17.D\r\n軟件是與計算機操作相關的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數據;軟件開發(fā)要受到計算機系統(tǒng)的限制;軟件是一個邏輯實體,不是物理實體,軟件具有抽象性。因此選項D正確。

18.B解析:數據的存儲結構,又稱為數據的物理結構,是數據的邏輯結構在計算機中的存放形式,數據的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。

19.B解析:選項A)定義的是長度為5的數組元素,但初值有6個元素,所以錯誤;選項C)不符合數組定義形式,數組名后應加上“[];選項D)的類型說明符錯誤,應改為char;選項B)中的0,1,2,3,4,5分別表示對應字符的ASCII碼,所以正確。

20.A

21.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

22.數據存儲數據存儲

23.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結果為1。

24.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現程序中的錯誤。

25.246246解析:本題考查靜態(tài)(static)局部變量的使用。fun函數中的靜態(tài)局部變量a所占用的存儲單元在程序運行過程中始終不釋放,即當下一次調用該函數時,該變量仍然保留上一次函數調用結束時已有的值,3次調用fun函數分別得到2,4,6。

26.投影投影解析:在關系模型的數據語言中,一般除了運用常規(guī)的集合運算,(并、交,差、笛卡爾積等)外,還定義了一些專門的關系運算,如投影、選擇、連接等。投影是從二維表的列方向上進行的運算。

27.8888解析:程序中的0210表示八進制數,%x是以十六進制形式輸出。本題可先將0210轉換為十進制數,再將其轉換為十六進制數。

28.1111解析:格式字符。是以八進制無符號形式輸出整數(不輸出前導符0),因為整數9的八進制為11,所以輸出結果為11。

29.i<na[i]i<na[i]解析:在main函數中,randomize是為了生成隨機種子,以便在使用rand函數時產生不同的數。通過循環(huán)用rand函數產生10個隨機數。在fun函數中,要在n個數中找最大值,所以第一處填寫i<n,每次將當前最大值與數組中的某元素比較,第二處填寫a[i]。

30.邏輯關系邏輯關系

31.11解析:ifelse語句的功能是:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

32.1919解析:二叉樹具有如下性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。根據題意,度為2的節(jié)點為18個,那么,葉子結點就應當是19個。

33.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結點。第6層的結點數最多是26-1=32。注意區(qū)別“二叉樹的結點最多數”和“某一層的結點最多數”。前者的計算是深度為m的二叉樹最多有2m-1個結點。

34.-1-1解析:strcmp(s1,s2)函數的作用是:對字符數組s2和字符數組s1進行比較。如果s1<s2,則返回負數;如果s1==s2,則返回0;如果s1>s2,則返回正數。

35.00解析:在函數fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環(huán)結束時*n的值為0,再做(*n)--運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。

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

37.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數,從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內容”應是t*10。

38.驅動模塊驅動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調用或驅動,同時被測試模塊還要去調用其他模塊,前者稱為驅動模塊,后者稱為承接模塊。其中驅動模塊的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果;承接模塊的作用是代替被測模塊,調用其他模塊。

39.源程序源程序解析:用高級語言編寫的程序稱為源程序。源程序不能在計算機上直接運行,運行源程序有兩種方式:一種是通過解釋程序,對源程序逐句解釋執(zhí)行;另一種是先讓編譯程序將源程序一次翻譯產生目標程序(目標程序是計算機可直接執(zhí)行的機器語言程序,是一種二進制代碼程序),然后執(zhí)行目標程序。

40.findbigfindbig解析:f是指向函數的指針變量,根據題意要求,空格處應填入findbig。

本題目考查:C語言中指向函數的指針變量定義的一般形式為;

數據類型標識符(*指針變量名)();

“數據類型標識符”表示函數返回值的類型。

函數的調用可以通過函數名調用,也可以通過函數指針調用。在給函數指針變量賦值時,只需給出函數名而不必給出參數。(*p)()表示定義一個指向函數的指針變量,專門用來存放函數的入口地址,可以先后指向不同的指針變量。用函數指針調用函數時,只需要將(*p)代替函數名即可,在(*p)之后的括號中,根據需要寫上參數。

41.D解析:本題考查while循環(huán)。第一次循環(huán),先拿x的值和(y-1)比較,此時x=1,y-1=2,循環(huán)條件成立,比較完將x的值加1,此時x=2,進入循環(huán),a=a+1=1,判斷if語句的控制條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),先拿x的值和(y-1)比較,此時x=2,y-1=1,循環(huán)條件成立,比較完將x的值加1,此時x=3,進入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<x成立,執(zhí)行break語句退出循環(huán)。

42.C解析:在關系模型中,不需要事先構造數據的邏輯關系,只要將數據按照一定的關系存入計算機,也就是建立關系,選項A錯誤。對于表示關系的二維表,其最基本的要求是,表中元組的每一個分量必須是不可分的數據項,即不允許表中再有表,選項B和D錯誤。本題的正確答案是C。

43.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項A)和C)符合要求。函數isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。

44.Cstrlen(s)返回s字符串中字符的個數,若S是一個數組,則返回數組元素的個數。

45.C解析:sort函數的功能是將給定的數由大到小排序。函數調用sort(aa+2,5);中的實參aa+2是aa[2]的地址,將其傳給形參a[],使得形參中封a[0]的值為主函數中aa[2]的值,即3;實參5傳給形參n,在sort函數中用于指定參加排序的5個數,從aa[2]到aa[6],所以本題輸出的結果是:1,2,7,6,5,4,3,8,9,10,

46.C解析:本題在定義字符數組時沒有定義數組長度,但用字符常量給數組賦了初值,這時初值的個數即為數組的長度,故數組長度為6(包括'\\0')。字符串的長度為有效字符的個數5。strlen(s)返回值為串中字符的個數(不計最后的'\\0'),則輸出值為5。sizeof(s)計算數組所占的字節(jié)數,包含'\\0',則輸出值為6。因此,C選項正確。

47.A解析:typedef用來聲明新的類型名來代替已有的類型名,typedef只是對已經存在的類型增加了一個類型名,原有類型名仍有效。typedef不能用來定義變量。

48.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準備輸出的數據塊的起始地址,size表示每個數據塊的字節(jié)數,count用來指定每寫一次或輸出的數據塊,fp為文件指針。

49.B解析:本題考核軟件工程中的需求分析環(huán)節(jié)。需求分析應交付的主要文檔就是需求規(guī)格說明書。

50.C解析:計算機語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須編譯成能被計算機識別的二進制數才能執(zhí)行,選項B錯誤;C語言出現在1972年到1973年間,并不是出現最晚的語言,所以選項D也是錯誤的。

51.B

52.D解析:p指向的a的首地址,由于C語言是行優(yōu)先存儲的,一維數組p就依次存放了a中從第0行到第2行的所有元素,因此a[1][i]就對應了p[3]~p[5]。

53.C解析:功能性注釋是嵌在源程序體中的,用以描述其后的語句或程序段是在做什么工作,或者執(zhí)行了下面的語句會怎么樣。所以它描述的是一段程序,是為程序段做注釋,而不是每條語句。

54.C答案C

解析:在語句“k=*f(a,b)”中,由于“()”的優(yōu)先級高于“*”,所以“*f(a,b);”表示其返回類型為指針的帶有兩個整型參數的函數。

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

56.B本題中INTEGER被定義為int*的別名,故直接由它定義的類型基類型為整型的指針變量。因此,p是基類型為int的指針變量,q是int型指針的指針變量。故4個選項中B正確。

57.B

58.A

59.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

60.C

61.D

62.D本題考查兩個知識點,按位異或左移把b左移2位化成二進制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故選擇D。

63.B解析:二維數組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數組第一維的下標是i,說明它前面還有i行,有i*m個元素,數組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

64.A

65.A結構化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。

66.C

67.B

68.Disspaee(c)檢查參數c是否為空格字符。若參數e為空格字符,則返回TRUE,否則返回NULL(0)。Is—di#t(c)函數檢查參數c是否為阿拉伯數字0到9。返回值若為阿拉伯數字,則返回TRUE,否則返回NULL(O)。fLm()函數的第一個for循環(huán)判斷字符串是否為負號。第二個for循環(huán)獲取符號后面的數字字符,并將它們轉化為整數。遇到了非數字的字符跳出,最后返回數組的結果。因此,可知首先獲取負號,緊接著獲取數值26,遇到了字符a,跳出返回一26,因此打印的結果是一26。故答案為D選項。

69.CC?!窘馕觥繉€性表進行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關鍵字進行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進行比較,因此比較次數為n。

70.B

71.C選項A“對于float類型數組,不可以直接用數組名完成對數組進行整體輸入或輸出”,是正確的。C語言中規(guī)定,只有字符型的數組才可以用數組名完成對數組進行整體輸入或輸出,主要是因為沒有字符串型的變量,通常用一個字符數組來存放字符串。采用字符串方式后,便可用數組名對數組進行整體輸入和輸出。

選項B“數組名代表的是數組所占存儲區(qū)的首地址,其值是常量,是不可改變的”,是正確的。數組名本身是沒有方括號和下標的,它實際上是表示數組起始的地址,該地址在數組初始化時由系統(tǒng)分配。

選項C“當程序執(zhí)行中,數組元素的下標超出所定義的下標范圍時,系統(tǒng)將給出‘下標越界’的出錯信息”,是錯誤的。在某些編程語言中,下標的取值是不允許超出數組定義中所設的界限的。但是在C和C++中,編譯器不對下標的范圍進行檢查。不檢查下標范圍的目的有兩個,一個是提高運行效率,不檢查下標,程序編譯耗費時間少。另一個是能夠方便指針的使用,數組名并沒有包含該數組長度的信息,只包含地址信息,可以看成是一個指針,若檢查下標,將限制數組名的使用功能。

選項D“可以通過賦初值的方式確定數組元素的個數”是正確的。C語言規(guī)定,如果對數組中所有的元素賦初值,可以省略定義元素的個數。

72.C

73.A

74.C要按照每行8個輸出數據的話,橫線處語句的功能應該為:當i是8的倍數時(即i%8==0),輸出一個換行符。因此C選項正確。

75.B

76.D

77.C本題考查賦值語句,而選項A、B是表達式,不合題意,選項D中強制類型轉換,應把類型名用括號括起來,選項C中i--也可寫成i=i-1,故選擇c選項。

78.A樹形結構是一類重要的非線性數據結構。樹是n(n≥0)個結點的集合,對應任意一棵非空樹,它具有以下幾點重要的性質。

①有且僅有一個特定的稱為根的結點。

②當n>1時,其余結點可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。

因此,本題的正確答案有且只有一個。

79.D解析:軟件需求規(guī)格說明書SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用,①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據;③作為確認測試和驗收的依據。

80.C

81.\n\t(1)錯誤:intproc(charstr[])

\n正確:voidproc(char、tr[])

\n(2)錯誤:str[j]=str[++];

\n正確:str[j]=str[i];

\n【解析】由主函數中的函數調用可知,函數proc沒有返回值。因此,“intproccharstr[])”應改為“voidproc(charstr[])”;由函數proc可知,if語句塊完成將字符串str中的第i個元素與第j個元素相交換。因此,“str[j]=str[i++];”應改為“str[j]=str[i];”。\n

82.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str長度

\nwhile(i<(n+1)/2)//循環(huán)逆置交換

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函數中,首先求行字符串的長度,然后通過循環(huán)進行字符交換。要注意的是,如果字符串長度是奇數,則最中間的元素在逆置前后的位置是沒有改變的。\n2021-2022年河南省新鄉(xiāng)市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數,則散列地址為1的元素有()個。

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

2.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

3.下述程序執(zhí)行的輸出結果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&

4.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

5.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

6.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環(huán),從鍵盤輸入的數據應該是()。A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數

7.某二叉樹共有7個結點,其中葉子結點只有l(wèi)個,則該二叉樹的深度為(假設根結點在第1層)()。

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

8.以下函數不能用于向文件中寫入數據的是()。

A.hellB.fwriteC.fputcD.fprintf

9.若有定義語句:“intyear=2009,*p=&year;”,以下不能使變量year中的值增至2010的語句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

10.

11.若有定義語句:char*s1="OK",*s2="ok";,以下選項中,能夠輸出"OK"的語句是A.A.if(strcmp(s1,s2)==0)puts(s1);

B.if(strcmp(s1,s2)!=0)puts(s2);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)!=0)puts(s1);

12.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的運行結果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

13.若有定義inta=5,b=7;,則表達式a%=(b%2)運算后,a的值為()。

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

14.

15.從堆中刪除一個元素的時間復雜以為____。

A.O(1)B.O(log2n)C.O(n)D.O(nlog2n)

16.數據庫DB、數據庫系統(tǒng)DBS、數據庫管理系統(tǒng)DBMS之間的關系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系

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

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數據與相關文檔的集合

18.數據的存儲結構是指()。

A.數據所占的存儲空間

B.數據的邏輯結構在計算機中的存放形式

C.數據在計算機中的順序存儲方式

D.存儲在計算機外存中的數據

19.以下能正確定義一維數組的選項是()。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

20.在一個無向圖中,所有頂點的度數之和等于所有邊數的()倍。

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

二、2.填空題(20題)21.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

22.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

23.若a的值為1,則表達式!a‖++a的值是______。

24.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現程序中的錯誤。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

26.【】是從二維表列的方向進行的運算。

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

#include<stdio.h>

main()

{ihtx=0210;printf("%x\n",x);

}

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

inti=9;

prinff("%o\n",i);

29.下面程序中函數fun的功能是:找出一維數組元素中的最大值和它所在的下標,并將最大值和其下標通過形參傳回。數組元素中的值已在主函數中賦予。主函數中x是數組名,n是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。請?zhí)羁铡?/p>

#include<stdlib.h>

#include<sldio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];*d=0;

for(i=0;【】;i++)

if(*max<【】)

{*max=a[i];*d=i;}

}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max.&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

30.數據元素之間______的整體稱為邏輯結構。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

32.某二義樹中度為2的結點有18個,則該二叉樹中有______個葉子結點。

33.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。

34.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數strcmp(s1,s2)后,結果是______。

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

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

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

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,D);

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

}

37.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

38.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

39.用高級語言編寫的程序稱為【】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過編譯程序一次翻譯產生目標程序,然后執(zhí)行。

40.設函數findbig已定義為求3個數中的最大值,以下程序將利用函數指針調用findbig函數。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

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

}

三、1.選擇題(20題)41.下列程序的運行結果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

42.在關系模型中,()。

A.為了建立一個關系,首先要構造數據的邏輯關系

B.表示關系的二維表中各元組的每一個分量還可以分成若干數據項

C.一個關系的屬性名表稱為關系模式

D.一個關系可以包括多個二維表

43.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

44.有以下字符串,說明表達式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

45.有以下程序:#include<stdio,h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[1];a[i]=a[j];a[j]=t;}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa+2,5);for(i=0;i<10;i++)prinff("%d,",aa[i]);prinff("\n");程序運行后的輸出結果是()。

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

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

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

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

46.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}執(zhí)行后輸出結果是()。

A.賦初值的字符串有錯B.6,7C.5,6D.6,6

47.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

48.fwrite函數的一般調用形式是

A.fwrite(buffer,count,size,fp);

B.fwrite(fP,size,count,buffer);

C.fwrite(fp,count,size,buffer);

D.fwrite(buffer,size,count,fp);

49.需求分析最終結果是產生

A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告

50.以下敘述中正確的是______。

A.C語言比其他語言高級

B.C語言可以不用編譯就能被計算機識別執(zhí)行

C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式

D.C語言出現的最晚,具有其他語言的一切優(yōu)點

51.有以下程序#include<stdio.h>intfun(inta,intB){if(b=0)returna;elsereturn(fun(--a,--B));}main(){pdntf("%d\n",fun(4,2));}程序的運行結果是()。

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

52.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;1++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);程序運行后的輸出結果是______。

A.012B.123C.234D.345

53.編制一個好的程序,首先要保證它的正確性和可靠性,還應強調良好的編程風格,在書寫功能性注釋時應考慮

A.僅為整個程序作注釋B.僅為每個模塊作注釋C.為程序段作注釋D.為每個語句作注釋

54.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

則以下函數調用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

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

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

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

C.how'are'you

D.ahow'are'y\bou

56.若有以下說明和定義:typedefint*INTEGER;INTEGERp,*q;以下敘述正確的是()A.p是整型變量

B.p是基類型為整型的指針變量

C.q是基類型為整型的指針變量

D.程序中可用INTEGER代替int類型名

57.假定所有變量已正確說明,下列程序段運行后,x的值是()a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

58.有以下程序#include<stdio.h>voidmain(){chars[]={"01aXy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]<='a'&&s[i]>='z')n++;printf("%d\n",n);}程序運行后的輸出結果是()。

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

59.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

60.有以下程序:intx=1,y=2;voidfunl(){x=3;y=4;}voidfun2(intx,inty){printf("%d,%d,\n",x,y);}main(){funl();printf("%d,%d,"x,y);fun2(5,6);}程序的運行結果是()

A.1,2,3,4B.1,2,5,5C.3,4,5,6D.3,4,1,2

四、選擇題(20題)61.

62.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

63.若二維數組a有m列,則在a[i][j]前的元素個數為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

64.

65.結構化程序設計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

66.

67.

68.有以下程序:

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

A.一263B.2C.0D.一26

69.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數為()。

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

70.

71.28.以下敘述中錯誤的是

A.對于float類型數組,不可以直接用數組名完成對數組進行整體輸入或輸出

B.數組名代表的是數組所占存儲區(qū)的首地址,其值是常量,是不可改變的

C.當執(zhí)行程序時,數組元素的下標超出所定義的下標范圍時,系統(tǒng)將給出“下標越界”的出錯信息

D.可以通過賦初值的方式確定數組元素的個數

72.

73.

74.以下函數實現按每行8個輸出W所指數組中的數據:

在橫線處應填人的語句是()。

A.if(i/8==0)printf(”\n”);

B.if(i/8==O)continue;

C.if(i%8==0)prinff(’’\n”);

D.if(i%8==0)continue;

75.

76.

77.下列可作為C語言賦值的語句的是()。

A.x一3,y=5B.a=b=6C.i--;D.a,c

78.樹是結點的集合,它的根結點數目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

79.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()

A.便于用戶,開發(fā)人員進行理解和交流

B.反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據

C.作為確認測試和驗收的依據

D.便于開發(fā)人員進行需求分析

80.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.除D.并

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,輸入opdye,則應輸出deopy。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charc;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

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

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=c;

}

}

voidmain

{

charstr[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\n\nBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%s",str);

}

六、程序設計題(1題)82.請編一個函數fun(ohlr*str),該函數的功能是把字符串中的內容逆置。

例如,字符串中原有的字符串為asdf9,則調用該函數后,串中的內容為9fdsa。

請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填人所編寫的若干語句。

試題程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

參考答案

1.D

2.A

溫馨提示

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

評論

0/150

提交評論