2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第1頁
2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第2頁
2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第3頁
2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第4頁
2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年福建省寧德市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

2.軟件是程序、數(shù)據(jù)和【】的集合。

3.有以下程序:

voidswap1(intc[])

{intt;

t=c[0];c[0]=c[1];c[1]=t;

}

voidswap2(intc0,intc1)

{intt;

t=c0;c0=c1;c1=t;

}

main()

{inta[2]={3,5},b[2]={3,5};

swaplA);swap2(b[0],b[1]);

printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);

}

其輸出結(jié)果是【】。

4.以下程序的功能是輸出字符串。請?zhí)羁铡?/p>

main()

{char*a[]={"Pascal","Clanguage","dbase","Cobol"};

char【】;

intj=0;

p=a;

for(;j<4;j++)

print{("%s\n",*【】);

}

5.以下程序的功能是:輸出x、y、z三個(gè)變量中的最大值,請?zhí)羁铡?/p>

main()

{intx,y,z,u;

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

if(【】)u=x;

elseu=y(tǒng);

if(【】)u=z;

printf("u=%d",u);

}

6.以下程序的運(yùn)行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}

7.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為______。

8.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請?zhí)羁铡?/p>

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

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

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

9.度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為______。

10.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

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

{b[I][N-1]=【】;【】=a[N-1][I];}}

二、單選題(10題)11.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;

A.10B.20C.40D.30

12.

13.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

14.棧和隊(duì)列的共同特點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

15.有以下程序

#include<stdio.h>

main()

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

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運(yùn)行結(jié)果是

A.A.331

B.41

C.2

D.1

16.在Windows環(huán)境下,單擊當(dāng)前應(yīng)用程序窗口中的“關(guān)閉”按鈕,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.退出Windows后重新啟動計(jì)算機(jī)

D.終止當(dāng)前應(yīng)用程序的運(yùn)行

17.以下有關(guān)宏的描述不正確的是()。

A.宏定義不做語法檢查B.雙引號中出現(xiàn)的宏名不進(jìn)行替換C.宏名無類型D.宏名必須用大寫字母表示

18.

19.下列4項(xiàng)說法中,不正確的是______。

A.數(shù)據(jù)庫減少了數(shù)據(jù)冗余B.數(shù)據(jù)庫中的數(shù)據(jù)可以共享C.數(shù)據(jù)庫避免了一切數(shù)據(jù)的重復(fù)D.數(shù)據(jù)庫具有較高的數(shù)據(jù)獨(dú)立性

20.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序運(yùn)行后輸出的結(jié)果是()。A.246810B.13579C.12345D.678910

三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),它的功能是求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時(shí),程序輸出應(yīng)為s=153.909064。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是刪除一個(gè)字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。例如,輸入一個(gè)字符串“World”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為“Word”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){ charstr1[LEN],str2[LEN]; intn; system(“CLS”); printf(“Enterthestring:\n”); gets(str1); printf(“Enterthepositionofthestringdeleted:”); scanf(“%d”,&n);fun(str1,str2,n); printf(“Thenewstringis:%s\n”,str2);}

23.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個(gè)字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為:

WWW

SSS

HHH

III

則字符串中的內(nèi)容應(yīng)是WSHIWSHIWSHI。

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

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

試題程序:

24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4EFg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}voidmain(void){ chartt[51]; printf(“\nPleaseenterancharacterstringwithin50characters:\n”); gets(tt); printf(“\n\nAfterchanging,thestring\n%s”,tt); fun(tt); printf(“\nbecomes\n%s”,tt);}

25.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符為l,則輸出3。

注意:部分源程序在文件PROGl.C中。

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

26.編程計(jì)算下列表達(dá)式:s=n!(n從鍵盤上輸入)

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

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

printf("\n");

}

else

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

printf("\n");

}

28.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個(gè)兩位正整數(shù)合并成一個(gè)新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位數(shù)和個(gè)位數(shù)依次放在變量c的千位和十位上。例如,當(dāng)a=45,b=12,調(diào)用該函數(shù)后c=1425。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

29.編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的后面。

例如,分別輸人下面兩個(gè)字符串:FirstString——SecondString

程序運(yùn)行后的輸出結(jié)果是:FirstString————SecondString

注意:部分源程序在文件PROGl.C中。

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

30.M名學(xué)生的成績已在主函數(shù)中放人一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫字母都改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“edS,dAd”,則輸出“EDS,DAD”。

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#include<conlo.h>

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

charfun(chartt[])

{

inti;

for(i=0;tt[i];i++)

{

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

if((tt[i]>='A')&&(tt[i]<='2'))

tt[i]-=32;

}

return(tt);

}

main()

{

inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringiS:/n%s",fun(tt));

}

32.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個(gè)新串放在t所指的數(shù)組中。

例如,當(dāng)s所指字符串為:“ABCD”時(shí),則t所指字符串中的內(nèi)容應(yīng)為:“ABCDDCBA”。

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

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

33.給定程序MODll.C中函數(shù)fun的功能是:對N名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。

請改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。

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

34.給定程序MODll.C中fun函數(shù)的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。

和值通過函數(shù)值返回main函數(shù)。

例如,若n=5,則應(yīng)輸出:8.391667。

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

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

35.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個(gè)3行3列的矩陣的各個(gè)元素的值,然后輸出主對角線元素之積。

請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

#include<stdio.h>

intfun()

{

inta[3][3],mu1;

inti,j;

mu1=l;

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

{

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

for(i=0;i<3;j++)

scanf(“%d”,&a[i][j]);

}

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

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

mu1=mu1*a[i][j];

printf("Mu1=%d\n",mu1);

}

main()

{

fun();

}

36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))

例如,若p=10,則應(yīng)輸出0.617977。

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

注意:不要改動mah函數(shù),不得增行或刪行,也不得更改程序的蛄構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

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

ihtfun(ihtn)

{floatA=l;inti;

/**************foudn********************/

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

A=1.0/(i+A);

returnA;

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

}

37.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。

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

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

試題程序:

#include<stdio.h>

doublefun(intn)

{

doubleresult=l.0;

whil(n>l&&n<170)

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

result*=--n;

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

return;

main()

{int.n;

clrscr();

printf("Enteraninteger:");

scanf("%d",&n);

printf("\n\n%d!=%lg\n\n",n,fun(n));

}

38.下列給定程序中,函數(shù)fun()的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(floatx[],intn)

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

ihtj,c=0;floatxa=0.0;

for(j=0;j<n;.j++)

xa+=x[j]/n;

printf("ave=%f\n",xa);

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

if(x[j]>=xa)

c++;

returnc;

}

main()

{floatx[l00]={193.199,195.673,195.757,

196.051,196.092,196.596,

196.579,196.763};

clrscr();

printf("%d\n",fun(x,8));

}

39.下列給定程序中,函數(shù)fun()的功能是:求整數(shù)x的y次方的低3位值。例如,整數(shù)5的6次方為15625,此值的低3位值為6250

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

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

試題程序:

#include<stdio.h>

longfun(intx,inty,long*p)

{inti;

longt=1;

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

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

t=t*x;

*p=t;

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

t=t/1000;

returnt;

}

main()

{longt,r;intx,y;

printf("\nInputxandy:");scanf

("%1d%1d",&x,&y);

t=fun(x,y,&r);

printf("\n\nx=%d,y=%d,r=%1d,last=

%1d\n\n",x,y,r,t);

}

40.給定程序MODll.C中函數(shù)fun的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回到main函數(shù)。

例如,若n=5,則應(yīng)輸出:8.391667。

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

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

五、程序改錯(cuò)題(2題)41.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型參數(shù)m,計(jì)算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,則應(yīng)輸出0.000162。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

42.下列給定程序中,函數(shù)proc的功能是找出100~m(m不大于1000)之間百位數(shù)字加十位數(shù)字等于個(gè)位數(shù)字的所有整數(shù),把這些整數(shù)放在s所指的數(shù)組中,個(gè)數(shù)作為函數(shù)值

返回。

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

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

試題程序:

#include<stdio.h>

#defineM1000

intproc(int*S.intn)

{

inti,j,k,a,b,c;

j=0;

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

{

//****found****

k=n:

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

//****found****

s[j]=i:

}

returnj;

}

voidmain

{

inta[M],m,num=0,i;

do

{

printf("\nEnterm(<=1000):");

scanf("%d",&m);

}

while(m>1000);

num=proc(a,m);

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

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

printf("%5d",a[i]);

printf("\n\n");

}六、操作題(2題)43.以下程序的輸出結(jié)果是【】。

main()

{charc='z';

printf("%c",c-25);}

44.fun1函數(shù)的功能是將3個(gè)整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c3個(gè)變量中,a中放最大數(shù),fun2函數(shù)的功能是交換兩個(gè)變量中的值。補(bǔ)足所缺語句。

fun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

fun1(int*p1,int*p2,int*p3)

{if(*p3>*p2)fun2(*P2,*p3);

if(*p1<*p3)fun2(______);

if(*p1<*p2)fun2(______);

}

main()

{inta,b,c;

scanf("%d%d%d",&a,&b,&c);

fun1(&a,&b,&c);

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

}

參考答案

1.continuecontinue解析:continue語句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。break語句是終止整個(gè)循環(huán)的執(zhí)行,不再進(jìn)行條件判定。

2.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

3.53355335解析:函數(shù)swap1的形參是數(shù)組,故形參的改變能夠影響實(shí)參,所以執(zhí)行完swap1(a)后,a[0]=5、a[1]=3;函數(shù)swap2的形參是簡單變量,故形參的改變不能夠影響實(shí)參,所以執(zhí)行完swap2(b)后,b[0]=3、b[1]=5;正確答案為5335。

4.**p(p+i)

5.x>yz>u

6.C

7.扇出扇出解析:在結(jié)構(gòu)圖中,調(diào)用一個(gè)給定模塊的模塊個(gè)數(shù)稱為扇入,一個(gè)模塊直接調(diào)用的其他模塊個(gè)數(shù)稱為扇出。

8.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的數(shù)組a是一個(gè)3行4列的二維數(shù)組,一維數(shù)組b用于存放每行的最大數(shù)。在函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù),當(dāng)外層循環(huán)執(zhí)行一次時(shí),內(nèi)層循環(huán)則從一行的4個(gè)數(shù)中找出最大數(shù)x,然后將最大值x賦給數(shù)組br,故空格處應(yīng)填br[i]或*(br+i)。

9.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標(biāo)順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。

10.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,\ue008b[I][0]=a[N-1][I]實(shí)現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。

11.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項(xiàng)正確。

12.A

13.D

14.C解析:考查棧和隊(duì)列概念的掌握。棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種'后進(jìn)先出'的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種'先進(jìn)先出'的線性表。模塊之間的耦合程度反映了模塊的獨(dú)立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項(xiàng)C),沒有這種耦合方式。

15.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或?yàn)椤凹佟睍r(shí)執(zhí)行指定的動作,由if引導(dǎo)條件為“真”時(shí)執(zhí)行的操作;由else引導(dǎo)條件為“假”時(shí)執(zhí)行的操作。else語句要與上面最近的if語句進(jìn)行匹配,如果要嵌套調(diào)用if-else語句,需要將嵌套部分用{}括起來,避免程序報(bào)錯(cuò)。題目中給出了一個(gè)if語句和一個(gè)if-else語句,if-else語句為第一個(gè)if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進(jìn)行x++操作。x的初始值為1,輸出結(jié)果為1。

16.D

17.D解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標(biāo)識符字符串.標(biāo)識符稱為宏名,無類型;②雙引號中出現(xiàn)的宏名不替換;③宏名的定義通常用大寫字母,但不是必須用大寫;④宏定義不是賦值語句,不做語法檢查。

18.A

19.C解析:數(shù)據(jù)庫系統(tǒng)具有以下4個(gè)特點(diǎn):數(shù)據(jù)的集成性、數(shù)據(jù)的高共享性與低冗余性、數(shù)據(jù)的獨(dú)立性、數(shù)據(jù)統(tǒng)一管理與控制。

20.D本題中exch函數(shù)是用數(shù)組中的第6個(gè)元素對第1個(gè)元素進(jìn)行賦值,所以數(shù)組的值應(yīng)該為678910。21.1doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);本題考查算術(shù)運(yùn)算的算法。首先利用一個(gè)for循環(huán)判斷小于n且能同時(shí)被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用Sqrt()函數(shù)計(jì)算sum的平方根,并將其作為函數(shù)的返回值返回。22.voidfun(chara[],charb[],intn){ inti,k=0; for(i=0;a[i]!=‘\0’;i++) if(i!=n) /*將不是指定下標(biāo)的字符存入數(shù)組b中*/ b[k++]=a[i]; b[k]=‘\0’; /*在字符串最后加上字符串結(jié)束標(biāo)志*/}本題要求刪除字符串中指定下標(biāo)的字符,即把非指定下標(biāo)的字符保留。所以if語句條件表達(dá)式為“i!=n”。字符串最后不要忘記加上字符串結(jié)束標(biāo)志‘\\0’。

23.

(2)錯(cuò)誤:if(*r==0)

正確:if(*r==ˊ\0ˊ)

【解析】由于后面的語句控制變量r是指向字符串t的指針,而不是指向字符串str的指針,因此,“r=p;”應(yīng)改為“r=t;”。while循環(huán)結(jié)束后,如果r指向字符串t的結(jié)束符,證明字符串str中包含一個(gè)t字符串,因此,“if(*r=0)”應(yīng)改為“if(*r==ˊ\0ˊ)”。

24.voidfun(char*ss){ inti; for(i=0;ss[i]!=‘\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母*/ if(i%2==1&&ss[i]>=‘a(chǎn)’&&ss[i]<=‘z’) ss[i]=ss[i]-32;}將指定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫字母,首先需要判斷奇數(shù)位置,再判斷該位置字符是不是小寫字母,如果是小寫字母,則將小寫字母轉(zhuǎn)換為大寫字母。字母大小寫轉(zhuǎn)換操作中,只要將小寫字母的ASCII值減去32即可轉(zhuǎn)換為大寫字母。25.

【考點(diǎn)分析】

本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串是否結(jié)束。

【解題思路】

從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是‘\0’,判斷語句用來判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個(gè)數(shù)。26.\n\t#include'stdio.h'

\nmain

\n{longt=1;

\ninti;

\nfor(i=1;i<=10;i++)

\nt=t*i;

\nprintf('%ld',t);}

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

\n{

\ninti,j=0;

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

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

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

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

\n}

\n【解析】本題需要先判斷1~m每一個(gè)整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個(gè)數(shù)通過形參n返回主函數(shù)。\n28.voidfun(inta,intb,long*c){/*b%10獲取b的個(gè)位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個(gè)位數(shù),b/10獲取b的十位數(shù)*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本題主要考核如何取出變量a和b的個(gè)位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于變量a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個(gè)位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個(gè)位數(shù)。注意使用變量c時(shí)要進(jìn)行指針運(yùn)算。29.

voidfun(charpl[],charp2[])

in“,j;

for(i=0;pl[i]f=。、0’;i++);

for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];

p1[i],_。、0’;}

【考點(diǎn)分析】“

本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過for循環(huán)語句來完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識‘、0’。

【解題思路】

本題用兩個(gè)循環(huán)完成操作,第1個(gè)循環(huán)的作用是求出第1個(gè)字符串的長度,即將i指到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第l個(gè)字符申的末尾。最后在第l個(gè)字符串的結(jié)尾加上字符串結(jié)束標(biāo)識‘、0’。

30.

【解析】要找出學(xué)生的最高分,就要比較所有學(xué)生的成績。定義一個(gè)變量max用來存放學(xué)生的最高分,初始化為第一個(gè)學(xué)生的成績,依次與其后的學(xué)生成績相比較,最后將得到的最高分返回主函數(shù)。

31.(1)錯(cuò)誤:charfun(chartt[])正確:char*fun(chartt[])(2)錯(cuò)誤:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正確:if((tt[i]>=‘a(chǎn)’)&&(tt[i]<=‘z’))(1)錯(cuò)誤:charfun(chartt[])正確:char*fun(chartt[])\r\n(2)錯(cuò)誤:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正確:if((tt[i]>=‘a(chǎn)’)&&(tt[i]<=‘z’))解析:錯(cuò)誤1:函數(shù)的返回值是字符串的首地址,是指針類型,所以在函數(shù)名前要加'*'號。錯(cuò)誤2:題目要求將小寫字母改為大寫字母,所以if語句的判斷條件是小寫字母。

32.(1)voidfun(char*schar*t)(2)t[2*d]=‘\0’;(1)voidfun(char*s,char*t)(2)t[2*d]=‘\0’;解析:本題中函數(shù)的功能是將字符串的正序和反序進(jìn)行連接。題目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,實(shí)現(xiàn)正序和逆序的連接。

33.(1)t=(STU*)calloc(sizeof(sTu)m);(2)t[k]=b[j];(1)t=(STU*)calloc(sizeof(sTu),m);(2)t[k]=b[j];解析:本題中函數(shù)的功能是按學(xué)習(xí)成績從高到低的順序找出前m(m≤10)名學(xué)生。利用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)對定義的結(jié)構(gòu)體中的成績域進(jìn)行排序。

34.(1)doublefun(intn)(2)c=a;a+=b;b=c;(1)doublefun(intn)(2)c=a;a+=b;b=c;解析:本題中函數(shù)的功能是求出分?jǐn)?shù)序列的前n項(xiàng)之和。首先根據(jù)題干中給出的公式推出每一項(xiàng)之間的關(guān)系,求出每一項(xiàng)的表達(dá)式,然后求得數(shù)列的和。每一項(xiàng)的分母是前一項(xiàng)的分子,分子是前一項(xiàng)分子和分母的和。

35.(1)錯(cuò)誤:for(i=0;j<3;j++)正確:for(j=0;j<3;j++)(2)錯(cuò)誤:mu1=mu1*a[i][j];正確:mu1=mul*a[i][i];(1)錯(cuò)誤:for(i=0;j<3;j++)正確:for(j=0;j<3;j++)\r\n(2)錯(cuò)誤:mu1=mu1*a[i][j];正確:mu1=mul*a[i][i];解析:錯(cuò)誤1:循環(huán)結(jié)構(gòu)中,要給變量j賦初值0。錯(cuò)誤2:主對角元素的行號和列號相等,所以參加乘法的是a[i][i],而不是a[i][j]。

36.(1)錯(cuò)誤:intfun(intn)正確:floatfun(intn)(2)錯(cuò)誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)(1)錯(cuò)誤:intfun(intn)正確:floatfun(intn)\r\n(2)錯(cuò)誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)解析:該題中fun()函數(shù)的作用是計(jì)算數(shù)列前n項(xiàng)的和,而數(shù)列的組成方式是:第n項(xiàng)的分母是功口第n-1項(xiàng)的值,分子為1,如果循環(huán)累加按for(i=2;i<n;i++)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論