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頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

一、單選題(12題)1.

2.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

3.設(shè)有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()。

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

4.以下選項(xiàng)中與“(!a==0)”的邏輯值不等價的表達(dá)式是()。

A.(a==!0)B.aC.(a>0||a<0)D.(a!=0)

5.如有inta=11;則表達(dá)式(a/1)的值是()。

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

6.相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

7.若有定義“charc=“hello!”;”,則以下說法正確的是()。

A.c占用7字節(jié)內(nèi)存B.c是一個字符串變量C.定義中有語法錯誤D.c的有效字符個數(shù)是6

8.用不帶頭結(jié)點(diǎn)的單鏈表存儲隊(duì)列時,其隊(duì)頭指針指向隊(duì)頭結(jié)點(diǎn),其隊(duì)尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行刪除操作時()。

A.僅修改隊(duì)頭指針B.僅修改隊(duì)尾指針C.隊(duì)頭、隊(duì)尾指針都要修改D.隊(duì)頭,隊(duì)尾指針都可能要修改

9.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)

10.有以下程序#include<stdio.h>main(){charcl,c2;c1=A+8-4c2=A+8-5;printf("%C,%d\n",cl,c2);}已知字母A的ASCIl碼為65,程序運(yùn)行后的輸出結(jié)果是()。A.E,69B.D,69C.E,DD.輸出無定值

11.表達(dá)式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5

12.

二、2.填空題(12題)13.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

14.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。

15.已知字符'A'的ASCII碼為65,以下程序運(yùn)行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

16.一個項(xiàng)目具有一個項(xiàng)目經(jīng)理,一個項(xiàng)目經(jīng)理可管理多個項(xiàng)目,則實(shí)體“項(xiàng)目經(jīng)理”與實(shí)體“項(xiàng)目”的聯(lián)系屬于()的聯(lián)系。

17.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEP<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。

18.最簡單的交換排序方法是______。

19.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

20.閱讀下列程序,則程序的輸出結(jié)果為【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

21.輸入字母a時,下列程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{charch;

ch=getchar();

(ch>='a'&&ch<='z')?putchar(ch+'A'-'a'):putchar(ch);

}

22.有以下程序:

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

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

23.若有定義inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[1][1]得到的初值是______。

24.【】(黑箱或白箱)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征。

三、3.程序設(shè)計(jì)題(10題)25.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

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

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

[試題源程序]

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,&n);

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

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

{

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

printf("\n");

}

else

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

}

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

例如,若學(xué)生的成績是:85,76,69,85,91,72,64,87,則平均分應(yīng)當(dāng)是:78.625。

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

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

27.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫fun()函數(shù),它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請自己定義正確的形參。

例如,若學(xué)生的成績是85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)當(dāng)是78.875。

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

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

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

}

main()

{

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*輸出學(xué)號*/

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

printf("%4.1f\n",s.s[i]);

/*輸出各科成績*/

printf("\nave=%7.3f\n",s.ave);

/*輸出平均分*/

}

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

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

13579

29994

69998

13570

則函數(shù)值為61。

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

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

29.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:使字符串的前導(dǎo)*號不得多于n個;若多于n個,則刪除多余的*號:若少于或等于n個,則什么也不做,字符串中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為:******A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為;*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

30.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubleS;

}STREC;

doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)

{

}

main()

{

STRECs[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STRECh[N],l[N],t;

FILE*out;

inti,j,m,n;

doubleave;

ave=fun(S,h,l,&n,&m);

printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);

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

printf("%s%4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);

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

printf("%s%4.1f\n",l[i].num,l[i].s);

printf("\n");

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

fprintf(out,"%d\n%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分?jǐn)?shù)從現(xiàn)到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n%7.3f\n",m,ave);

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

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

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}

31.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。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelow[])

{

}

main()

{

ihti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,

80,90};

clrscr();

n=fun(score,9,below);

printf("\nBelowtheaveragescoreare:");

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

printf("%d",below[i]);

}

32.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

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

33.請編寫函數(shù)fun,其功能是:計(jì)算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。

例如,給定數(shù)組中的9個元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應(yīng)為:s=35.951014。

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

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

34.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。

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

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

四、單選題(0題)35.下面程序中算法的時間復(fù)雜度是()A.O(n)B.O(n^2)C.O(logn)D.O(n*logn)

五、單選題(0題)36.將數(shù)據(jù)和操作置于對象統(tǒng)一體中的實(shí)現(xiàn)方式是()。

A.隱藏B.抽象C.封裝D.結(jié)合

六、單選題(0題)37.下列描述錯誤的是()。

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

B.對象之問的通信靠傳遞消息來實(shí)現(xiàn)

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

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

參考答案

1.C

2.C

3.D

4.A運(yùn)算符邏輯非“!”和“==”,邏輯非“!”的優(yōu)先級高于“==”,選項(xiàng)A等價于“(!a)==0”。如果a不等于0,則表達(dá)式為真,否則表達(dá)式為假。故本題答案為A選項(xiàng)。

5.D

6.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。

7.Cc是字符變量,“hello!”是字符串。字符串不能賦給字符變量,定義中有語法錯誤。本題答案為C選項(xiàng)。

8.D

9.C

10.A本值輸出兩個值,%c為輸出一個字母,0/4d輸出一個數(shù)字?!癆”的ASCIl碼為65,再加4之后為69,也就是字母E,所以本題A正確。

11.B\n本題考查了強(qiáng)制類型轉(zhuǎn)換。9/2為double型,所以結(jié)果為4.5,又強(qiáng)制轉(zhuǎn)換為整型,所以結(jié)果為4。9%2為取余運(yùn)算,結(jié)果為1。最終結(jié)果4-1=3。

\n

12.D

13.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個。

14.選擇結(jié)構(gòu)選擇結(jié)構(gòu)解析:程序設(shè)計(jì)語言僅僅使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。遵循程序結(jié)構(gòu)化的設(shè)計(jì)原則,按結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)出的程序易于理解、使用和維護(hù);可以提高編程工作的效率,降低軟件的開發(fā)成本。

15.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式輸出\'C\'的ASCII碼為67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式輸出為\'G\'。

16.一對多一對多解析:實(shí)體之間的對應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)聯(lián)。兩個實(shí)體間的聯(lián)系可以歸結(jié)為三種類型:一對一聯(lián)系表現(xiàn)為某一實(shí)體與另一實(shí)體一一對應(yīng)相關(guān)聯(lián):一對多聯(lián)系表現(xiàn)為某一實(shí)體與相關(guān)多個實(shí)體相關(guān)聯(lián);多對多聯(lián)系表現(xiàn)為多個實(shí)體與相關(guān)多個實(shí)體相聯(lián)系。所以實(shí)體“項(xiàng)目經(jīng)理”與實(shí)體“項(xiàng)目”的聯(lián)系屬于一對多的聯(lián)系。

17.函數(shù)strcmp(t,s)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0;若t<s,則函數(shù)值小于0。函數(shù)strcpy(t,s)的功能:把字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指存儲空間中。

本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán),s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t

18.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

19.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

20.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

21.A

22.87788,7,7,8解析:本題中執(zhí)行語句p=&a和q=&b后,*p=7,*q=8;執(zhí)行完語句r=p,p=q,q=r后,*p=8,*q=7,故答案為8,7,7,8。

23.00解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。

24.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據(jù)程序規(guī)格說明所規(guī)定的功能來設(shè)計(jì)測試用例,它不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。常用的黑箱測試技術(shù)分為等價類劃分、邊界分析、錯誤猜測以及因果圖等。

25.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)if((i%7=0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)\r\nif((i%7=0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;\r\n}解析:本題的關(guān)鍵是if條件語句及參數(shù)傳遞。本題的設(shè)計(jì)思路是:(1)利用循環(huán)遍歷1到1000之內(nèi)的整數(shù);(2)利用if語句判斷,把查找到的整數(shù)保存到形參數(shù)組a中;(3)把數(shù)組a中數(shù)組元素的個數(shù)賦值到形參指針n所指的內(nèi)存。注意程序中if語句的判斷條件,本題是找出能被7或11整除但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的數(shù)一定能被77整除,且不能被7整除的數(shù)不一定就是能被7或11整除的數(shù)。所以,可得出程序中的if語句。

26.

解析:該程序功能是求出存儲在帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中成績的平均分。解題思路是,首先對單鏈表中存儲的所有成績求總分,然后對總分計(jì)算平均值。

27.voidfun(STREC*p){inti;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i];/*求各門成績的總和*/p->ave=p->ave/N;/*求平均分*/}voidfun(STREC*p)\r\n{\r\ninti;\r\np->ave=0.0;\r\nfor(i=0;i<N;i++)\r\np->ave=p->ave+p->s[i];/*求各門成績的總和*/\r\np->ave=p->ave/N;/*求平均分*/\r\n}解析:本題考查自己定義形參的相關(guān)知識點(diǎn),程序流程是這樣的,在fun()函數(shù)中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一個指針類型的形參STREC*p,此時,引用成員的方式可以是用指向運(yùn)算符即p->ave和p->s[i],當(dāng)然,也可用(*p).ave和(*p).s[i]。

28.

解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標(biāo)為0,最后一行元素的行下標(biāo)為M-1,第一列的列下標(biāo)為0,最后一列的列下標(biāo)為N-1。

29.

解析:該程序功能是根據(jù)字符串前導(dǎo)的“*”號個數(shù)進(jìn)行相關(guān)操作。解題過程首先確定字符串尾,然后由串頭開始對字符進(jìn)行判斷,同時對“*”字符進(jìn)行統(tǒng)計(jì),如果大于n,就進(jìn)行截取。

30.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個循環(huán)的作用是將高于等于平均分的學(xué)生存/kb所指存儲單元中,將低

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論