2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第1頁
2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第2頁
2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第3頁
2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第4頁
2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計真題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.已知字符'A'的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。

#include<stdio.h>

main()

{chara,b;

a=getchar();seanf("%d",&b);

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

prinff("%c%c\n",a,b);

}

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

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

①第0列元素和主對角線元素均為1;

②其余元素為其左上方和正上方元素之和;

③數(shù)據(jù)的個數(shù)每行遞增1。

請將程序補充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=1;

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

{x[i][0]=x[i][i]=1;

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

x[i][j]=【】;

}

}

3.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達式為:______。

4.以下程序的輸出結(jié)果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

5.當(dāng)運行以下程序時,輸入abcd,程序的輸出結(jié)果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

printf("%s\n",sir);

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

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

#include<stdio.h>

main()

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

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

7.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。

8.設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為DBACFEG,則后序遍歷結(jié)果為【】。

9.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有______。

10.本程序用冒泡法對數(shù)組a[]的元素從大到小排序,請在程序空白處填空。voidbubble(inta[],intn){inti,j,max,temp;max=n-1;do{j=0;for(i=0;i<max;i++)if(a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;j=i;}max=j;}while(());}

二、單選題(10題)11.以下選項中,當(dāng)x為大于l的奇數(shù)時,值為0的表達式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

12.下列敘述中正確的是()。

A.軟件測試應(yīng)該由程序開發(fā)者來完成

B.程序經(jīng)調(diào)試后一般不需要測試

C.軟件維護只包括對程序代碼的維護

D.以上三種說法都不對

13.以下符號中不能作為標(biāo)識符的是()。A._256B.voidC.scanfD.Struct

14.有以下程序段當(dāng)執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

15.以下不能將s所指字符串正確復(fù)制到所指存儲空間的是()A.do{*t++=*s++;}while(*s);.

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++}

D.for(i=0,j=0;t[i++]=s[j++];);

16.

17.若a是數(shù)值類型,則邏輯表達式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

18.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循環(huán),不能確定次數(shù)

19.

20.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進棧,每進一個元素,機器可要求下一個元素進?;驈棗?,如此進行,則??諘r彈出的元素構(gòu)成的序列是以下哪些序列?

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}

D.{c,d,b,e,f,a,g}

三、程序設(shè)計題(10題)21.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放人記錄的ave成員中。

例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。

22.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)proc(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

23.N名學(xué)生的成績已在主函數(shù)中放人一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。

例如,若學(xué)生的成績是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。

24.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。

例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。

請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

注意:m的值要大于2但不大于100。部分源程序給出如下。

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intm)

{}

voidmain

{

intm;

doubles;

FILE*out:

printf("\n\nInputm:");

scanf("%d",&m);

s=fun(m);

printf("\n\ns=%f\n\n",s);

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

for(m=0;m<10;m++)

fprintf(out,"%f\n",fun(m+80));

felose(out);

}

25.請編一個函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的內(nèi)容為gfdsa。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

26.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

27.請編寫一個函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。

例如,若傳給m的值為70,則程序輸出:

7111421222833354244495556636670

注意:部分源程序給出如下。

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行輸出20個數(shù)

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}28.請編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x的值為30,則有3個數(shù)符合要求,它們是15,5,3。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

29.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。程序中將m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

30.請編寫函數(shù)proc(),其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、同時ASCⅡ碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFG12345,其中字符8的ASCⅡ碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCⅡ碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依次類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所寫的若干語句。試題程序:

四、2.程序修改題(10題)31.給定程序MODII.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:87653142時,t中的數(shù)為:8642。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

32.下列給定程序中函數(shù)fun()的功能是:從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為642。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

/*************found**************/

voidfun(longs,longt)

{longs1=10;

s/=10;

*t=s%10;

/*************found**************/

while(s<0)

{s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

33.給定程序MODll.C中函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,若輸入:edcba,則應(yīng)輸出:abcde。

請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

34.下列給定程序中,函數(shù)fun()的功能是:根據(jù)以下公式求n的值,并作為函數(shù)值返回。例如,給指定精度的變量eps輸入0.0005時,應(yīng)當(dāng)輸出Pi=3.140578。

n/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doubleeps)

{doubles,t;intn=t;

s=0.0;

/*************found**************/

t=1;

/*************found**************/

while(t>eps)

{s+=t;

t=t*n/(2*n+1);

n++;

}

/*************found**************/

return(s);

}

main()

{doublex;

printf("\nPleaseenteraprecision:");

scanf("%1f",&x);

printf("\nPi=%1f\n",fun(x));

}

35.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)的數(shù)依次逆向取出,構(gòu)成一個新數(shù)放在t中。高位在低位,低位在高位。例如當(dāng)s中的數(shù)為25846513時,t中的數(shù)為6482。請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(longS,long*t)

{

intd;

longsl=l,i=1;

*t=0;

while(s/i>0)

i=i*10;

i=i/10;

while(s>0)

{

d=s/i

/*************found*************/

if(d%2!=0)

{

/*************found*************/

t=d*sl+t;

sl*=l0;

}

S=S%i;

i=i/10;

}

}

main()

{

longS,t;

clrscr();

printf("\nPleaseenterS:");

scanf("%ld",&s);

fun(S,&t);

printf("Theresultis:%ld\n",t);

}

36.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:7654321時,t中的數(shù)為:642。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

/************found************/

voidfun(longs,longt)

{

longs1=10;

s/=10;

*t=s%10;

/************found************/

while(s<0)

{

s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

mein()

{

longs,t;

printf("\nPleaseenters:");

scanf("%1d",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

37.下列給定程序中,函數(shù)fun()的功能是:給一維數(shù)組a輸入任意4個整數(shù),并按如下的規(guī)律輸出。例如輸入1,2,3,4,程序運行后輸出以下方陣:

4123

3412

2341

1234

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序;

#include<stdio.h>

#defineM4

/*******************************/

voidfun(inta)

{inti,j,k,m;

printf("Enter4number:");

for(i=0;i<M;i++)scanf("%d",&a[i]);

printf("\n\nTheresult:\n\n");

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

{k=a[M-1];

for(j=M-1;j>0;j--)

/**********************************/

a[j]=a[j+1];

a[0]=k;

for(m=0;m<M;m++)printf("%d",a[m]);

printf("\n");

}

}

main()

{inta[M];

fun(a);printf("\n\n");

}

38.給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:87653142時,t中的數(shù)為:7531。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

39.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。

例如,若字符串為abcd,則應(yīng)輸出:dcba。

請改正程序中的錯誤,使它能計算出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

40.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。

例如,給指定精度的變量eps輸入0.0005時,應(yīng)當(dāng)輸出Pi=3.141480。

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是計算并輸出h以內(nèi)的素數(shù)之和。h由主函數(shù)傳給proc()函數(shù)。若h的值為80,則函數(shù)的值為791。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:計算S=f(-n)+(-n+1)+…+f(O)+f(1)+(2)+…+f(n)的值。例如,當(dāng)n為l0時,函數(shù)值應(yīng)為22.550361。f(x)函數(shù)定義如下:請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的記錄已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是找出成績最高的學(xué)生記錄,通過形參將其返回主函數(shù)(規(guī)定只有一個最髙分)。已給出函數(shù)的首部,請完成該函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}44.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的首部,請完成該函數(shù)。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

#defineN10

typedefstructss/*定義結(jié)構(gòu)體*/

{charnum[10];

ints;

}STU;

fun(STUa[],STU*s)

{

}

main()

{

STUa[N]={{"A01",81},{"A02",89},

{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},

{"A09",80},{"A10",71}},m;

inti;

clrscr();

printf("*****Theoriginaldata*****");

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

printf("No=%sMark=%d\n",a[i].hum,

a[i].s);

fun(a,&m);

printf("*****THERESULT*****\n");

printf("Thetop:%s,%d\n",m.num,m.s);

}

參考答案

1.1B1B解析:本題輸入B33,字符'B'被輸入給字符變量a,33賦給b,執(zhí)行a=a-'A'+'0';得到a的值'1';執(zhí)行b=b*2;得到b值66,最后以字符型輸出為1B。

2.x[i-1][j-1]+x[i-1][j]x[i-1][j-1]+x[i-1][j]解析:在程序外層i循環(huán)中先將數(shù)組的第0列元素和主對角線元素置1,內(nèi)層j循環(huán)的功能是給其余元素賦值,根據(jù)題意,空格內(nèi)應(yīng)填入x[i-1][j-1)+x[i-1][j]。

3.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。

4.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為100。

5.a*b*c*d*a*b*c*d*解析:程序中的變量i用于存放字符串str的長度,執(zhí)行while語句,通過分析可知,字符串第2*i項的值可由第i項的值得到;第2*i-1項直接賦值為。號,i減1,如此反復(fù)直到不滿足i>0的條件時,輸出運行后的字符串。

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

7.33解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。

8.ACBEGFDACBEGFD解析:①確定根節(jié)點。在前序遍歷中,首先防問根結(jié)點,因此可以確定前序序列DBACFEG中的第一個結(jié)點D為二叉樹的根結(jié)點。

②劃分左子樹和右子樹。在中序遍歷中,訪問根結(jié)點的次序為居中,首先訪問訪問左子樹上的結(jié)點,最后訪問右子樹上的結(jié)點,可知,在中序序列ABCDEFG中,以根結(jié)點D為分界線,子序列ABC在左子樹中,子序列EFG在右子樹中。如下圖所示。

③確定左子樹的結(jié)構(gòu)。對于左子樹ABC,位于前序序列最前面的一個結(jié)點為了樹的根結(jié)點,根據(jù)前序遍歷結(jié)果,B為該了樹的根結(jié)點,中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列,所以A為該左子樹的左結(jié)點,C為右結(jié)點?,F(xiàn)在可確定左子樹結(jié)構(gòu)如下:

④確定右子樹的結(jié)構(gòu)。同理,可知右子樹的結(jié)構(gòu)。

本二叉樹恢復(fù)的結(jié)果如圖所示。

根據(jù)后序遍歷的原則,該二叉樹后序遍歷的結(jié)果為ACBEGFD。

9.前件前件

10.max>0max>0解析:本題是典型的冒泡排序題,每一次for循環(huán)將從數(shù)組a中找出剩下數(shù)中的最大的值放在這些數(shù)的最前端,若數(shù)組a中有n個數(shù),則完成數(shù)組排序共需n-1次循環(huán)。令max=n-1,每次循環(huán)后i值增1,i<max條件不足,即n-1次循環(huán)后,此時i=j=max=0,循環(huán)結(jié)束。

11.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1,因此,選項A)、C)中表達式的結(jié)果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結(jié)果為假,即等于0。

12.D程序調(diào)試是由程序開發(fā)者完成診斷和改正程序中的錯誤的過程;軟件測試是由專門的測試人員完成,是發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;軟件維護是指軟件系統(tǒng)交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程,是軟件生存周期中非常重要的一個階段。

13.B

14.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

15.Ado{*t++=*s++;}while(*s);不能因為當(dāng)*s=‘\\0'時,while(*s)跳出循環(huán),這樣字符串結(jié)束標(biāo)志’0\\沒有復(fù)制給*t,造成*t不完整。注意,*t++=*s++是先執(zhí)行t=*s,然后才進行t=t+1,s=s+1。B),C),D)三項都能將“\\0’復(fù)制過去。

16.C

17.A由于a==l和a!=1兩者互斥,即總有一個為真,因此二者的或也必定為真。

18.D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號內(nèi)表達式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號內(nèi)表達式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進行下去。所以,4個選項中D為所選。

19.D

20.A21.

【考點分析】

本題考查:結(jié)構(gòu)體類型成員運算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。

【解題思路】

本題考查自定義形參的相關(guān)知識點,程序流程是這樣的:在fun函數(shù)中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一個指針類型的形參STREC*a,此時,引用成員的方式可以使用指向運算符,即a一>ave和a一>s[i],當(dāng)然也可用(*a).a(chǎn)ve和(*a).s[i]。

22.

【解析】要求出數(shù)組周邊元素的平方和,首先要找到二維數(shù)組所有的周邊元素。二維數(shù)組的周邊元素的特點為行下標(biāo)或列下標(biāo)為0或M一1。根據(jù)這個特點,找出二維數(shù)組中所有的周邊元素,求出其平方和放在變量s中。最后將變量s返回到主函數(shù)中。

23.

【考點分析】

本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個結(jié)點、刪除一個結(jié)點。

【解題思路】

題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語句遍歷鏈表,求各結(jié)點數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時應(yīng)定義一個指向結(jié)點的指針P,因為“頭結(jié)點”中沒有數(shù)值,所以程序中讓P直接指向“頭結(jié)點”的下一個結(jié)點,使用語句STREC+P=h÷next。24.\r\n\tintn,k,i;

doublesum=0.0;

for(n=3;n<=m;n++)//判斷n是否為素數(shù)

{

k=sqrt(n);//求n平方根

for(i=2;i<=k:i++)

if(n%i==0)break;//如果n不是素數(shù),跳出

if(i>=k+1)

sum+=sqrt(n);//求平方根的和

}

returnsum;

【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根的累加和,并返回計算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt函數(shù)。

25.

【解析】在fun()函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。

26.

【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點為,其列下標(biāo)小于其行下標(biāo)。根據(jù)這個特點,將二維數(shù)組的下半三角元素都賦值為0。

27.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//進行m次循環(huán)

\nif(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)

\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中

\n*n=j;//返回這些數(shù)的個數(shù)

\n}

\n【解析】本題需要先判斷1~m每一個整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過形參n返回主函數(shù)。\n

28.

【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)中。

29.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中*/</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>10returnj;/*</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計算低于平均分的人數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過for循環(huán)語句和if條件語句找出低于平均值的分?jǐn)?shù)。該題第1個循環(huán)的作用是求出平均值av,第2個循環(huán)的作用是找出數(shù)組score中低于平均值的成績記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)

30.

【解析】題目中要求將字符串str中下標(biāo)為偶數(shù)、同時ASCⅡ碼值為奇數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標(biāo)為偶數(shù)的字符的ASCⅡ碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,為新的字符串?dāng)?shù)組添加結(jié)束符。

31.(1)if(d%2==0)(2)s/=10;(1)if(d%2==0)(2)s/=10;解析:本題中函數(shù)的功能是將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。首先在函數(shù)中對長整型數(shù)的每一位來進行截取,然后對其進行判斷,最后根據(jù)判斷結(jié)果進行操作。

32.(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)(1)錯誤:voidfun(longs,longt)正確:voidfun(longs,long*t)\r\n(2)錯誤:while(s<0)正確:while(s>0)解析:本題考查函數(shù)調(diào)用方式和while循環(huán)語句中條件限制的方法。主函數(shù)中fun()的調(diào)用方式說明fun()函數(shù)的參數(shù)應(yīng)當(dāng)為指針類型,所以voidfun(longs,longt)正確的寫法應(yīng)該是voidfun(longs,long*t)。

33.(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])解析:本題中函數(shù)的功能是讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。本題思路是利用字符串長度作為循環(huán)的控制條件,然后在循環(huán)過程中將字符按.ASCII碼排序。

34.(1)錯誤:t=0;正確:t=1.0;(2)錯誤:while(t>eps)正確:while(t>=eps)(3)錯誤:return(s);正確:return(s*2);(1)錯誤:t=0;正確:t=1.0;\r\n(2)錯誤:while(t>eps)正確:while(t>=eps)\r\n(3)錯誤:return(s);正確:return(s*2);解析:該題中,我們首先看函數(shù)fun()中while語句的含義,當(dāng)新的一項大于給定參數(shù)時,循環(huán)累加。根據(jù)題意我們可以看出,最后一項應(yīng)該小于給定參數(shù),因此,循環(huán)條件應(yīng)當(dāng)為while(t>=eps)。至于return(s);錯誤,是一個數(shù)學(xué)常識,應(yīng)該是return(s*2);。

35.(1)錯誤:if(d%2!=0)正確:if(d%2==0)(2)錯誤:t=d*s1+t;正確:*t=d*s1+*t;(1)錯誤:if(d%2!=0)正確:if(d%2==0)\r\n(2)錯誤:t=d*s1+t;正確:*t=d*s1+*t;解析:錯誤1:偶數(shù)是能被2整除,而奇數(shù)是不能被2整除,題目要求找出偶數(shù)。錯誤2:t為指針類型,所以進行運算時要加‘*’號。

36.(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)(1)錯誤:voidfun(longs,longt)\r\n正確:voidfun(longs,long*t)\r\n(2)錯誤:while(s<0)\r\n正確:while(s>0)解析:錯誤1:在函數(shù)fun體中,t是一個指針型變量,由C的基礎(chǔ)知識我們可以知道,定義形參時也應(yīng)定義指針。

錯誤2:

溫馨提示

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

最新文檔

評論

0/150

提交評論