2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}執(zhí)行后的結(jié)果是()。A.7B.3C.2D.0

2.設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為()。

A.0B.‘\0’C.非零值D.NULL

3.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

4.

5.在如下結(jié)構(gòu)定義中,不正確的是()。A.

B.

C.

D.

6.下列描述錯(cuò)誤的是()。

A.繼承分為多重繼承和單繼承

B.對(duì)象之間的通信靠傳遞消息來(lái)實(shí)現(xiàn)

C.在外面看不到對(duì)象的內(nèi)部特征是基于對(duì)象的“模塊獨(dú)立性好”這個(gè)特征

D.類是具有共同屬性、共同方法的對(duì)象的集合

7.用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個(gè)都是

8.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

9.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0

10.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

11.有以下程序:

#include<stdio.h>

voidfunc(intn)

{staticintnum=1);

num=num+n;printf("%d",num);

}

main()

{funo(3);func(4);printf("n");}

程序運(yùn)行后的輸出結(jié)果是()。

A.48B.34C.35D.45

12.算術(shù)運(yùn)算符和圓括號(hào)有不同的運(yùn)算優(yōu)先級(jí),對(duì)于表達(dá)式“a+b+c*(d+e)”,關(guān)于執(zhí)行順序,以下說(shuō)法正確的是()。

A.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“a+b”得r1,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

B.先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

C.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“b+r3”得r4,最后執(zhí)行“a+r4”得表達(dá)式最后結(jié)果

D.先執(zhí)行“a+b”得r1,再執(zhí)行“r1+c”得r5,再執(zhí)行“(d+e)”得r2,最后執(zhí)行“r5*r2”得表達(dá)式最后結(jié)果

二、2.填空題(12題)13.以下函數(shù)用來(lái)求出2個(gè)整數(shù)之和,并通過(guò)形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

14.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語(yǔ)句后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

15.下面程序的運(yùn)行結(jié)果是:【】。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d%d\n”,*p,*q);

}

16.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb”);

fseek(myf,()SEEK_END);fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

17.設(shè)有宏定義:

#defineWIDTH80

#defineLENGTHWIDTH+40

則執(zhí)行賦值語(yǔ)句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。

18.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

19.軟件需求規(guī)格說(shuō)明書應(yīng)具有完整性、無(wú)歧義性、正確性、可驗(yàn)證性、可修復(fù)性等特性,其中最重要的是()。

20.設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

21.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

22.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運(yùn)行后,輸出結(jié)果是【】。

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.關(guān)系可以有3種類型,即基本關(guān)系(又稱基本表或基表)、查詢表和【】。

三、3.程序設(shè)計(jì)題(10題)25.編寫程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)

例如,輸入下面的矩陣:

100200300

400500600

700800900

程序輸出:

100400700

200500800

300600900

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

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

26.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。

請(qǐng)編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

則返回主程序后a數(shù)組中的值應(yīng)為

554

499

8610

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語(yǔ)句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

clrscr();

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

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

/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/

{

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

{

a[i][j]=rand()%10;

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

}

printf("\n");

}

do

n=rand()%10;

/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/

while(n>=5);

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

fun(a,n);

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

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

{

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

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

printf("\n");

}

}

27.請(qǐng)編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最小元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

234345753134436458100321135760

則輸出結(jié)果為6,100。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

printf("%dr%d\n",k,a[k]);

}

28.請(qǐng)編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

876675896101301401980431451777

則輸出結(jié)果為6,980。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

29.請(qǐng)編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

30.請(qǐng)編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

{for(j=0;j<N;j++)

printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

31.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號(hào)中填入所編寫的若啡:語(yǔ)句。

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECsIN]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:In");

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

{if((i)%4=-0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

out=fopen("out16.dat","w");

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

{if((i)%4==0&&i)

fprintf(out,"\n");

fprintf(out,"%4d",s[i].s);

}

fprintf(out,"\n");

fclose(out);

}

32.請(qǐng)編寫一個(gè)函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*tt,intpp[])

{

}

main()

{

charaa[1000];

intbb[26],k,n;

clrscr();

printf("\nPleaseenteracharstring:");

scanf("%s",aa);

fun(aa,bb);

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

printf("%d",bb[k]);

printf("\n");

}

33.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如x有5門課程的成績(jī)是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

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

例如,分別輸入下面兩個(gè)字符串:

FirstString--

SecondString

程序輸出:

FirtString--SecondStdng

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

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

四、單選題(0題)35.在計(jì)算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

五、單選題(0題)36.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

六、單選題(0題)37.若變量已正確定義,在語(yǔ)句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

參考答案

1.C調(diào)用函數(shù)fun(7)時(shí),由于x的值為7,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);\r\n調(diào)用函數(shù)fun(5)時(shí),由于x的值為5,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);\r\n調(diào)用函數(shù)fun(3)時(shí),由于x的值為3,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);\r\n調(diào)用函數(shù)fun(1)時(shí),由于X的值為1,執(zhí)行語(yǔ)句“return(3);”,函數(shù)的返回值為3。\r\n因此函數(shù)調(diào)用fun(7)等價(jià)于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。

2.Cfeof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達(dá)文件末尾(遇到文件結(jié)束符)函數(shù)值為非零值,否則其值為0。故本題答案為C選項(xiàng)。

3.D解析:本題考查語(yǔ)句的基本構(gòu)成。選項(xiàng)A)中j=5后面少了一個(gè)分號(hào):選項(xiàng)B)中少了“}”;選項(xiàng)C)不是一個(gè)完整的函數(shù)定義格式,一個(gè)完整的函數(shù)定義格式還包括一對(duì)花括號(hào):選項(xiàng)D)正確,是一個(gè)空語(yǔ)句。

4.C

5.B

6.C解析:對(duì)象的封裝性是指從外面看只能看到對(duì)象的外部特性;而對(duì)象的內(nèi)部,其處理能力的實(shí)行和內(nèi)部狀態(tài)對(duì)外是不可見的,是隱蔽的。

7.C解析:在數(shù)據(jù)庫(kù)系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實(shí)體之間的聯(lián)系是用樹結(jié)構(gòu)來(lái)表示的,其中實(shí)體集(記錄型)是樹中的結(jié)點(diǎn),而樹中各結(jié)點(diǎn)之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。

8.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項(xiàng)。

9.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。

10.C解析:程序流程圖是人們對(duì)解決問(wèn)題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

11.A\n第一調(diào)用func函數(shù)時(shí)輸出4,第二次調(diào)用func函數(shù)時(shí)num的值并不會(huì)釋放,仍然是上次修改后的值4,第二次調(diào)用結(jié)果為8,所以輸出結(jié)果是48。

\n

12.B題干表達(dá)式中,圓括號(hào)的優(yōu)先級(jí)最高,乘法運(yùn)算符次之,加法運(yùn)算符最低。同優(yōu)先級(jí)中,加法運(yùn)算符的結(jié)合性從左向右結(jié)合,所以題干中的表達(dá)式執(zhí)行順序是:先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果。故本題答案為B選項(xiàng)。

13.int*

14.1010解析:該for語(yǔ)句以i為0,j為10作為初始值,循環(huán)條件是i<=j,每次循環(huán)后i增1、j減1,循環(huán)體是將i與j的和賦給k,這樣變量k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循環(huán)后i為2、j為8,……,五次循環(huán)后i為5、j為5,第六次循環(huán),將i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。

15.3535解析:在主函數(shù)中通過(guò)定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向了實(shí)參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實(shí)參的值,所以函數(shù)調(diào)用返回后x和y依然是原來(lái)的值。

16.fopenfopen解析:C語(yǔ)言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。

打開文件的函數(shù)為:fopen(),調(diào)用形式為:fP=fopen(”文件名”,”使用文件方式”);

關(guān)閉文件的函數(shù)為:folose(),調(diào)用形式為:foclose(fp);其中fp為文件指針。

17.880

18.00解析:本題考查的是do…while循環(huán)。第一次執(zhí)行循環(huán)體,因?yàn)閗=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次執(zhí)行循環(huán)體,k=0*2%10*2=0,n=10/10=1,r=3;第三次執(zhí)行循環(huán)體,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值為0。

19.正確性正確性解析:軟件需求規(guī)格說(shuō)明書是需求分析階段的最后成果,通過(guò)建立完整的信息描述、詳細(xì)的功能和行為描述、性能需求和設(shè)計(jì)約束的說(shuō)明、合適的驗(yàn)收標(biāo)準(zhǔn),給出對(duì)目標(biāo)軟件的各種需求。軟件需求規(guī)格說(shuō)明書的特點(diǎn):①正確性;②無(wú)歧義性;③完整性;④可驗(yàn)證性;⑤一致性;⑥可理解性;⑦可追蹤性。其中最重要的是正確性。

20.6060解析:*(*(p+2)+1)相當(dāng)于訪問(wèn)的是a[2][1]的值。*(p[2]+1)、p[2][1]以及(*(p+2))[1]表達(dá)的含義都是a[2][1]的值。

21.整型整型解析:上面的表達(dá)式中,通過(guò)強(qiáng)制類型轉(zhuǎn)換把最后參與運(yùn)算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。

22.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個(gè)參數(shù),形參f1與f2分別是兩個(gè)指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實(shí)際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。

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

24.視圖表視圖表解析:關(guān)系數(shù)據(jù)庫(kù)中通常有3種關(guān)系,即基本關(guān)系(又稱基本表或基表)、查詢表和視圖表?;颈硎窃跈C(jī)器中實(shí)際存儲(chǔ)數(shù)據(jù)的表。查詢表是查詢的結(jié)果所對(duì)應(yīng)的臨時(shí)表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是不實(shí)際存儲(chǔ)數(shù)據(jù)的表。視圖表是一個(gè)虛表。

25.

解析:該程序功能是實(shí)現(xiàn)矩陣的轉(zhuǎn)置。其中,矩陣的轉(zhuǎn)置就是實(shí)現(xiàn)矩陣行列元素的互換。例如,array[1][2]和array[2][1]進(jìn)行交換。

26.fun(inta[][N]intn){intij;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/}fun(inta[][N],intn)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<i;j++)\r\na[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/\r\n}解析:首先從數(shù)組中找出要被加上n的那部分元素,找的過(guò)程其實(shí)就是找出將被挑出的那部分元素在原數(shù)組中的分布規(guī)律的過(guò)程。通過(guò)觀察得出,要被處理的那部分元素的下標(biāo)值的范圍是每行中從第一個(gè)元素開始,直到列數(shù)等于該行行數(shù)時(shí)為止。找到這個(gè)規(guī)律后,依次從數(shù)組中取得合乎要求的元素,然后再加上n。

27.intfun(int*sinttint*k){inti;*k=0/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]>s[i])*k=i;/*找到數(shù)組的最小元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最小元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]>s[i])\r\n*k=i;/*找到數(shù)組的最小元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最小元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值勤,即*k=0。

28.intfun(int*sinttint*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最大元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

29.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。

30.intfun(inta[M][N]){intijsum=0;for(i=0;i<M;i++)for(j=0;i<N;j++)if(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1則它一定是周邊元素*/sum=sum+a[i][j];/*將周邊元素相加*/returnsum;}intfun(inta[M][N])\r\n{\r\ninti,j,sum=0;\r\nfor(i=0;i<M;i++)\r\nfor(j=0;i<N;j++)\r\nif(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素*/\r\nsum=sum+a[i][j];/*將周邊元素相加*/\r\nreturnsum;\r\n}解析:本題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或M-1或N-1,且只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素。

31.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進(jìn)行排序進(jìn)行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進(jìn)行排序,進(jìn)行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個(gè)數(shù),則要進(jìn)行N-1次比較,在每一次比較中要進(jìn)行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個(gè)數(shù)進(jìn)行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對(duì)調(diào)),即兩兩比較后這兩個(gè)數(shù)要形成題中所要求的順序。由于總是從頭到尾進(jìn)行比較,所以第1次比較結(jié)束后,最大(或最小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個(gè)數(shù),依次類推,所以進(jìn)行第一次比較時(shí)必須比較到最后一個(gè)數(shù),而進(jìn)行第2次比較時(shí)只要比較到倒數(shù)的第2個(gè)數(shù)即可,所以進(jìn)行第i次比較時(shí)只需比較N-i次即可(這種算法較難理解,但它是最好的)。

選擇法算法思路:如果有N個(gè)數(shù)則從頭到倒數(shù)的第2個(gè)數(shù)一個(gè)一個(gè)往后走動(dòng),每走動(dòng)1個(gè)數(shù)總是將這個(gè)數(shù)與其后的所有數(shù)進(jìn)行比較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)與該數(shù)進(jìn)行交換,交換后再走到下一個(gè)數(shù)依次交換到結(jié)束。此外,選擇法還可用如下思路:如果有N個(gè)數(shù),則從頭到倒數(shù)的第2個(gè)數(shù)—個(gè)一個(gè)往后走動(dòng),每走動(dòng)一個(gè)數(shù)總是將這個(gè)數(shù)與其后的所有數(shù)進(jìn)行兩兩比較,在比較時(shí)按順序?qū)⑦M(jìn)行比較的這兩個(gè)數(shù)排序(即交換)。

插入法算法思路:先對(duì)頭兩個(gè)數(shù)進(jìn)行排序。然后把第3個(gè)數(shù)插入到前兩個(gè)數(shù)中,插入后前3個(gè)數(shù)依然有序;再把第4個(gè)數(shù)插入到前3個(gè)數(shù)中,插入后前4個(gè)數(shù)依然有序;依次插完所有的數(shù)。具體執(zhí)行方式(假設(shè)從小到大排序):從第2個(gè)數(shù)開始往后一個(gè)一個(gè)走動(dòng)直到最后。每走到1個(gè)數(shù)總是將該數(shù)(先將其存到1個(gè)臨時(shí)變量中)與其前面的數(shù)進(jìn)行比較(比較的順序總是從后往前進(jìn)行),在比較時(shí)只要發(fā)現(xiàn)該數(shù)比被比較的數(shù)小,就將被比較的數(shù)往后移1位,然后該數(shù)還要冉與前1個(gè)數(shù)進(jìn)行比較,亢到發(fā)現(xiàn)該數(shù)比被比較的數(shù)大或己比較到頭(即第1個(gè)數(shù)的前面),并將該數(shù)存入當(dāng)前被比較數(shù)的后1位(存儲(chǔ)空間)。

如果有整型一維數(shù)組a其有N個(gè)元素,要求將其按從小到大排序。注意元素下標(biāo)是從0始的。

冒泡法:

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

for(j=0;N-1;j++)

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}

選擇法

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

{p=i;

for(ji+1;j<N;j++)

if(a[p]>a[j])p=j;

if{p!=i)

t=a[i];a[i]=a[p];a[p]=t;

}

插入法

for{i=1;i<N;i++}

{t=a[i];

for{j=i-1;a[j]>t&&j>=0;j--)

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

a[j+1]=t;

}

32.voidfun(char*ttintpp[]){inti;fori=0;i<26;i++)pp[i]=0;/*初始化pp數(shù)組各元素為0*/for(;*tt!='\0';tt++)if(*tt>='a'&&*tt<='z')pp[*tt-'a']++;/*將tt字符串中'a'到'z'26個(gè)字母各自出現(xiàn)的次數(shù)依次放在pp數(shù)組中任一個(gè)小寫字母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo)*/}voidfun(char*tt,intpp[])\r\n{\r\ninti;\r\nfori=0;i<26;i++)\r\npp[i]=0;/*初始化pp數(shù)組各元素為0*/\r\nfor(;*tt!='\\0';tt++)\r\nif(*tt>='a'&&*tt<='z')\r\npp[*tt-'a']++;/*將tt字符串中'a'到'z'26個(gè)字母各自出現(xiàn)的次數(shù),依次放在pp數(shù)組中,任一個(gè)小寫字\r\n母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo)*/\r\n}解析:第1個(gè)循環(huán)的作用是初始化數(shù)組pp,未經(jīng)賦值變量的量為一個(gè)不確定數(shù)字。由于它要將'a'到'z'26個(gè)字母的個(gè)數(shù)依次放到數(shù)組pp中。即'a'的個(gè)數(shù)存于pp[0]中,'b'的個(gè)數(shù)存于pp[1]中,'c'的個(gè)數(shù)存于pp[2]中,…,依次類推。而'a'-'a'的值正好為0,'b'-'a'的值為1,'c'-'a'的值為2,…,依此類推。即任一個(gè)小寫字母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo),所以就有了pp[*tt-'a']++。但*tt必須是小寫字母即if()不應(yīng)省略。

33.floatfun(float*aintn){floatav=0.0;inti;for(i=0;iav=av+a[i];/*求分?jǐn)?shù)的總和*/return(av/n);/*返回平均值*/}floatfun(float*a,intn)\r\n{\r\nfloatav=0.0;\r\ninti;\r\nfor(i=0;iav=av+a[i];/*求分?jǐn)?shù)的總和*/\r\nreturn(av/n);/*返回平均值*/\r\n}解析:我們先按數(shù)學(xué)的思路來(lái)計(jì)算平均分:總分除以人數(shù)即可得到平均分,其實(shí)用C語(yǔ)言的指針來(lái)實(shí)現(xiàn)該問(wèn)題,也不難。當(dāng)指針變量指向一個(gè)數(shù)組時(shí),用該指針變量引用數(shù)組元素時(shí),引用方式與數(shù)組的引用方式相同。如本題中a指向了score,所以通過(guò)a引用score中的元素時(shí)可以用下標(biāo)法,也可以用指針運(yùn)算法,a[i]和*(a+i)具有相同的作用。下標(biāo)運(yùn)算實(shí)際上是從當(dāng)前地址開始往后取出地址中的第幾個(gè)元素,當(dāng)前地址下標(biāo)為0。例如:若有intcc[10],*P=cc+5;,即p指向了cc的第5號(hào)元素,則p[0]的作用是取出從當(dāng)前地址(即p所指地址)開始的第0號(hào)元素,它與cc[5]相同:p[3]的作用是取出從當(dāng)前地址(即p所指地址)開始往后的第3號(hào)元素,它與cc[8]相同:p[-2]的作用是取出從當(dāng)前地址開始往前的第2號(hào)元素,它與cc[3]相同,但不提倡使用“負(fù)”的F標(biāo)。

34.

解析:該程序功能是實(shí)現(xiàn)兩個(gè)字符串的連接。本題要把串2連接到串1之后,則需要把串2的第一個(gè)字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。

35.B在計(jì)算機(jī)中,算法被定義為對(duì)一個(gè)問(wèn)題求解步驟的一種描述,是求解問(wèn)題的方法,它是指令的有限序列,其中每條指令表示一個(gè)或者多個(gè)操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點(diǎn)。

在本題中,選項(xiàng)A、C、D的說(shuō)法明顯偏離了算法的定義,因此正確答案選B。

36.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問(wèn)根結(jié)點(diǎn),然后按左右順序遍歷子結(jié)點(diǎn);②中序首先遍歷左子樹,然后訪問(wèn)根結(jié)點(diǎn),最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問(wèn)根結(jié)點(diǎn)。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對(duì)其進(jìn)行前序遍歷,正確答案選項(xiàng)為D。

37.A符號(hào)<>不是C語(yǔ)言中的運(yùn)算符,所以不能替代。2021年寧夏回族自治區(qū)吳忠市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}執(zhí)行后的結(jié)果是()。A.7B.3C.2D.0

2.設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為()。

A.0B.‘\0’C.非零值D.NULL

3.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

4.

5.在如下結(jié)構(gòu)定義中,不正確的是()。A.

B.

C.

D.

6.下列描述錯(cuò)誤的是()。

A.繼承分為多重繼承和單繼承

B.對(duì)象之間的通信靠傳遞消息來(lái)實(shí)現(xiàn)

C.在外面看不到對(duì)象的內(nèi)部特征是基于對(duì)象的“模塊獨(dú)立性好”這個(gè)特征

D.類是具有共同屬性、共同方法的對(duì)象的集合

7.用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個(gè)都是

8.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

9.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0

10.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

11.有以下程序:

#include<stdio.h>

voidfunc(intn)

{staticintnum=1);

num=num+n;printf("%d",num);

}

main()

{funo(3);func(4);printf("n");}

程序運(yùn)行后的輸出結(jié)果是()。

A.48B.34C.35D.45

12.算術(shù)運(yùn)算符和圓括號(hào)有不同的運(yùn)算優(yōu)先級(jí),對(duì)于表達(dá)式“a+b+c*(d+e)”,關(guān)于執(zhí)行順序,以下說(shuō)法正確的是()。

A.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“a+b”得r1,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

B.先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

C.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“b+r3”得r4,最后執(zhí)行“a+r4”得表達(dá)式最后結(jié)果

D.先執(zhí)行“a+b”得r1,再執(zhí)行“r1+c”得r5,再執(zhí)行“(d+e)”得r2,最后執(zhí)行“r5*r2”得表達(dá)式最后結(jié)果

二、2.填空題(12題)13.以下函數(shù)用來(lái)求出2個(gè)整數(shù)之和,并通過(guò)形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

14.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語(yǔ)句后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

15.下面程序的運(yùn)行結(jié)果是:【】。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d%d\n”,*p,*q);

}

16.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb”);

fseek(myf,()SEEK_END);fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

17.設(shè)有宏定義:

#defineWIDTH80

#defineLENGTHWIDTH+40

則執(zhí)行賦值語(yǔ)句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。

18.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

19.軟件需求規(guī)格說(shuō)明書應(yīng)具有完整性、無(wú)歧義性、正確性、可驗(yàn)證性、可修復(fù)性等特性,其中最重要的是()。

20.設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

21.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

22.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運(yùn)行后,輸出結(jié)果是【】。

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.關(guān)系可以有3種類型,即基本關(guān)系(又稱基本表或基表)、查詢表和【】。

三、3.程序設(shè)計(jì)題(10題)25.編寫程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)

例如,輸入下面的矩陣:

100200300

400500600

700800900

程序輸出:

100400700

200500800

300600900

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

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

26.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。

請(qǐng)編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

則返回主程序后a數(shù)組中的值應(yīng)為

554

499

8610

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語(yǔ)句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

clrscr();

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

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

/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/

{

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

{

a[i][j]=rand()%10;

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

}

printf("\n");

}

do

n=rand()%10;

/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/

while(n>=5);

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

fun(a,n);

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

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

{

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

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

printf("\n");

}

}

27.請(qǐng)編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最小元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

234345753134436458100321135760

則輸出結(jié)果為6,100。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

printf("%dr%d\n",k,a[k]);

}

28.請(qǐng)編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

876675896101301401980431451777

則輸出結(jié)果為6,980。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

29.請(qǐng)編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

30.請(qǐng)編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

{for(j=0;j<N;j++)

printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

31.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號(hào)中填入所編寫的若啡:語(yǔ)句。

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECsIN]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:In");

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

{if((i)%4=-0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

out=fopen("out16.dat","w");

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

{if((i)%4==0&&i)

fprintf(out,"\n");

fprintf(out,"%4d",s[i].s);

}

fprintf(out,"\n");

fclose(out);

}

32.請(qǐng)編寫一個(gè)函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*tt,intpp[])

{

}

main()

{

charaa[1000];

intbb[26],k,n;

clrscr();

printf("\nPleaseenteracharstring:");

scanf("%s",aa);

fun(aa,bb);

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

printf("%d",bb[k]);

printf("\n");

}

33.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如x有5門課程的成績(jī)是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

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

例如,分別輸入下面兩個(gè)字符串:

FirstString--

SecondString

程序輸出:

FirtString--SecondStdng

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

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

四、單選題(0題)35.在計(jì)算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

五、單選題(0題)36.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

六、單選題(0題)37.若變量已正確定義,在語(yǔ)句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

參考答案

1.C調(diào)用函數(shù)fun(7)時(shí),由于x的值為7,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);\r\n調(diào)用函數(shù)fun(5)時(shí),由于x的值為5,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);\r\n調(diào)用函數(shù)fun(3)時(shí),由于x的值為3,執(zhí)行語(yǔ)句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);\r\n調(diào)用函數(shù)fun(1)時(shí),由于X的值為1,執(zhí)行語(yǔ)句“return(3);”,函數(shù)的返回值為3。\r\n因此函數(shù)調(diào)用fun(7)等價(jià)于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。

2.Cfeof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達(dá)文件末尾(遇到文件結(jié)束符)函數(shù)值為非零值,否則其值為0。故本題答案為C選項(xiàng)。

3.D解析:本題考查語(yǔ)句的基本構(gòu)成。選項(xiàng)A)中j=5后面少了一個(gè)分號(hào):選項(xiàng)B)中少了“}”;選項(xiàng)C)不是一個(gè)完整的函數(shù)定義格式,一個(gè)完整的函數(shù)定義格式還包括一對(duì)花括號(hào):選項(xiàng)D)正確,是一個(gè)空語(yǔ)句。

4.C

5.B

6.C解析:對(duì)象的封裝性是指從外面看只能看到對(duì)象的外部特性;而對(duì)象的內(nèi)部,其處理能力的實(shí)行和內(nèi)部狀態(tài)對(duì)外是不可見的,是隱蔽的。

7.C解析:在數(shù)據(jù)庫(kù)系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實(shí)體之間的聯(lián)系是用樹結(jié)構(gòu)來(lái)表示的,其中實(shí)體集(記錄型)是樹中的結(jié)點(diǎn),而樹中各結(jié)點(diǎn)之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。

8.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項(xiàng)。

9.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。

10.C解析:程序流程圖是人們對(duì)解決問(wèn)題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

11.A\n第一調(diào)用func函數(shù)時(shí)輸出4,第二次調(diào)用func函數(shù)時(shí)num的值并不會(huì)釋放,仍然是上次修改后的值4,第二次調(diào)用結(jié)果為8,所以輸出結(jié)果是48。

\n

12.B題干表達(dá)式中,圓括號(hào)的優(yōu)先級(jí)最高,乘法運(yùn)算符次之,加法運(yùn)算符最低。同優(yōu)先級(jí)中,加法運(yùn)算符的結(jié)合性從左向右結(jié)合,所以題干中的表達(dá)式執(zhí)行順序是:先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果。故本題答案為B選項(xiàng)。

13.int*

14.1010解析:該for語(yǔ)句以i為0,j為10作為初始值,循環(huán)條件是i<=j,每次循環(huán)后i增1、j減1,循環(huán)體是將i與j的和賦給k,這樣變量k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循環(huán)后i為2、j為8,……,五次循環(huán)后i為5、j為5,第六次循環(huán),將i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。

15.3535解析:在主函數(shù)中通過(guò)定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向了實(shí)參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實(shí)參的值,所以函數(shù)調(diào)用返回后x和y依然是原來(lái)的值。

16.fopenfopen解析:C語(yǔ)言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。

打開文件的函數(shù)為:fopen(),調(diào)用形式為:fP=fopen(”文件名”,”使用文件方式”);

關(guān)閉文件的函數(shù)為:folose(),調(diào)用形式為:foclose(fp);其中fp為文件指針。

17.880

18.00解析:本題考查的是do…while循環(huán)。第一次執(zhí)行循環(huán)體,因?yàn)閗=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次執(zhí)行循環(huán)體,k=0*2%10*2=0,n=10/10=1,r=3;第三次執(zhí)行循環(huán)體,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值為0。

19.正確性正確性解析:軟件需求規(guī)格說(shuō)明書是需求分析階段的最后成果,通過(guò)建立完整的信息描述、詳細(xì)的功能和行為描述、性能需求和設(shè)計(jì)約束的說(shuō)明、合適的驗(yàn)收標(biāo)準(zhǔn),給出對(duì)目標(biāo)軟件的各種需求。軟件需求規(guī)格說(shuō)明書的特點(diǎn):①正確性;②無(wú)歧義性;③完整性;④可驗(yàn)證性;⑤一致性;⑥可理解性;⑦可追蹤性。其中最重要的是正確性。

20.6060解析:*(*(p+2)+1)相當(dāng)于訪問(wèn)的是a[2][1]的值。*(p[2]+1)、p[2][1]以及(*(p+2))[1]表達(dá)的含義都是a[2][1]的值。

21.整型整型解析:上面的表達(dá)式中,通過(guò)強(qiáng)制類型轉(zhuǎn)換把最后參與運(yùn)算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。

22.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個(gè)參數(shù),形參f1與f2分別是兩個(gè)指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實(shí)際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。

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

24.視圖表視圖表解析:關(guān)系數(shù)據(jù)庫(kù)中通常有3種關(guān)系,即基本關(guān)系(又稱基本表或基表)、查詢表和視圖表?;颈硎窃跈C(jī)器中實(shí)際存儲(chǔ)數(shù)據(jù)的表。查詢表是查詢的結(jié)果所對(duì)應(yīng)的臨時(shí)表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是不實(shí)際存儲(chǔ)數(shù)據(jù)的表。視圖表是一個(gè)虛表。

25.

解析:該程序功能是實(shí)現(xiàn)矩陣的轉(zhuǎn)置。其中,矩陣的轉(zhuǎn)置就是實(shí)現(xiàn)矩陣行列元素的互換。例如,array[1][2]和array[2][1]進(jìn)行交換。

26.fun(inta[][N]intn){intij;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/}fun(inta[][N],intn)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<i;j++)\r\na[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/\r\n}解析:首先從數(shù)組中找出要被加上n的那部分元素,找的過(guò)程其實(shí)就是找出將被挑出的那部分元素在原數(shù)組中的分布規(guī)律的過(guò)程。通過(guò)觀察得出,要被處理的那部分元素的下標(biāo)值的范圍是每行中從第一個(gè)元素開始,直到列數(shù)等于該行行數(shù)時(shí)為止。找到這個(gè)規(guī)律后,依次從數(shù)組中取得合乎要求的元素,然后再加上n。

27.intfun(int*sinttint*k){inti;*k=0/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]>s[i])*k=i;/*找到數(shù)組的最小元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最小元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]>s[i])\r\n*k=i;/*找到數(shù)組的最小元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最小元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值勤,即*k=0。

28.intfun(int*sinttint*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最大元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

29.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論