实验7数组的应用参考答案Word文件下载.docx

上传人:b****3 文档编号:18255695 上传时间:2022-12-14 格式:DOCX 页数:21 大小:138.61KB
下载 相关 举报
实验7数组的应用参考答案Word文件下载.docx_第1页
第1页 / 共21页
实验7数组的应用参考答案Word文件下载.docx_第2页
第2页 / 共21页
实验7数组的应用参考答案Word文件下载.docx_第3页
第3页 / 共21页
实验7数组的应用参考答案Word文件下载.docx_第4页
第4页 / 共21页
实验7数组的应用参考答案Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验7数组的应用参考答案Word文件下载.docx

《实验7数组的应用参考答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验7数组的应用参考答案Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

实验7数组的应用参考答案Word文件下载.docx

yanghui.c参考答案

[实验任务四]:

设计程序实例7-1:

学生成绩统计cjtj.c(一维数组和函数综合编程练习)参考答案

#include<

stdio.h>

#defineARR_SIZE30

intReadScore(intnum[],floatscore[]);

intGetFail(intnum[],floatscore[],intn);

floatGetAver(floatscore[],intn);

intGetAboveAver(intnum[],floatscore[],intn);

voidGetDetail(floatscore[],intn);

voidmain()

{

intn,num[ARR_SIZE],fail,aboveAver;

floatscore[ARR_SIZE];

printf("

Pleaseenternumandscoreuntilscore<

0:

\n"

);

n=ReadScore(num,score);

Totalstudents:

%d\n"

n);

fail=GetFail(num,score,n);

Failstudents=%d\n"

fail);

aboveAver=GetAboveAver(num,score,n);

Aboveaverstudents=%d\n"

aboveAver);

GetDetail(score,n);

}

/*函数功能:

从键盘输入一个班学生某门课的成绩及其学号,当输入成绩为负值时,输入结束

函数参数:

整型数组num,存储学生学号 

;

实型数组score,存储学生成绩

函数返回值:

学生总数

*/

intReadScore(intnum[],floatscore[])

{

inti=0;

scanf("

%d%f"

&

num[i],&

score[i]);

while(score[i]>

=0)

{

i++;

scanf("

}

returni;

统计不及格人数并打印不及格学生

整型数组num,存储学生学号

整型变量n,学生总数

不及格人数

intGetFail(intnum[],floatscore[],intn)

inti,count;

Fail:

\nnumber--score\n"

count=0;

for(i=0;

i<

n;

i++)

if(score[i]<

60)

{

printf("

%d------%.0f\n"

num[i],score[i]);

count++;

}

returncount;

计算全班平均分成绩

实型数组score,存储学生成绩

整型变量n,学生总数

平均分

floatGetAver(floatscore[],intn)

inti;

floatsum=0;

sum=sum+score[i];

returnsum/n;

统计成绩在全班平均分及平均分之上的学生人数并打印其学生

整型变量n,学生总数

成绩在全班平均分及平均分之上的学生人数

intGetAboveAver(intnum[],floatscore[],intn)

floataver;

aver=GetAver(score,n);

aver=%f\n"

aver);

Aboveaver:

if(score[i]>

=aver)

{

统计各分数段的学生人数及所占的百分比

voidGetDetail(floatscore[],intn)

inti,j,stu[6];

6;

i++)

stu[i]=0;

j=0;

else

j=((int)score[i]-50)/10;

stu[j]++;

if(i==0)

<

60%d%.2f%%\n"

stu[i],

(float)stu[i]/(float)n*100);

elseif(i==5)

%d%d%.2f%%\n"

(i+5)*10,stu[i],

%d--%d%d%.2f%%\n"

(i+5)*10,(i+5)*10+9,

stu[i],(float)stu[i]/(float)n*100);

程序运行结果如下:

0fornomorethan30students:

9901090↙

9901166↙

9901278↙

9901388↙

9901445↙

99015100↙

9901697↙

9901787↙

9901876↙

9901983↙

99020-1↙

10

number--score

99014-------45

Failstudents=1

aver=81.000000

99010------90

99013------88

99015------100

99016------97

99017------87

99020------83

Aboveaverstudents=6

60110.00%

60-69110.00%

70-79220.00%

80-89330.00%

90-99220.00%

100110.00%

设计程序实例7-2:

成绩排名次cjrank.c(二维数组、函数和常用算法综合编程练习)参考答案

#defineSTU30

#defineCOURSE3

voidInput(longnum[],intscore[][COURSE],intn);

voidGetSumAver(intscore[][COURSE],intn,intsum[],floataver[]);

voidSort(longnum[],intscore[][COURSE],intn,intsum[],floataver[]);

voidPrint(longnum[],intscore[][COURSE],intn,intsum[],floataver[]);

intSearch(longnum[],intn,longx);

main()

intn,score[STU][COURSE],sum[STU],pos;

longnum[STU],x;

floataver[STU];

Pleaseenterthetotalnumberofthestudents(n<

=30):

"

%d"

n);

/*输入参加考试的学生人数*/

EnterNo.andscoreas:

MTENPH\n"

Input(num,score,n);

/*输入学生成绩*/

GetSumAver(score,n,sum,aver);

/*计算总分和平均分*/

Beforesort:

Print(num,score,n,sum,aver);

Sort(num,score,n,sum,aver);

/*排名次*/

Aftersort:

Pleaseentersearchingnumber:

%ld"

x);

/*以长整型格式输入待查找学生的学号*/

pos=Search(num,n,x);

/*名次查寻*/

if(pos!

=-1)

position:

\tNO\tMT\tEN\tPH\tSUM\tAVER\n"

%8ld\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n"

pos+1,num[pos],

score[pos][0],score[pos][1],score[pos][2],

sum[pos],aver[pos]);

else

{

printf("

Notfound!

/*函数功能:

输入某班学生期末考试三门课程成绩

函数参数:

长整型数组num,存放学生学号

整型数组score,存放学生成绩

整型变量n,存放学生人数

函数返回值:

voidInput(longnum[],intscore[][COURSE],intn)

inti,j;

num[i]);

for(j=0;

j<

COURSE;

j++)

score[i][j]);

计算每个学生的总分和平均分

整型数组score,存放学生成绩

整型数组sum,计算得到的每个学生的总分

实型数组aver,计算得到的每个学生的平均分

voidGetSumAver(intscore[][COURSE],intn,intsum[],floataver[])

sum[i]=0;

sum[i]=sum[i]+score[i][j];

aver[i]=(float)sum[i]/COURSE;

按总分成绩由高到低排出成绩的名次

长整型数组num,存放学生学号

整型数组sum,存放每个学生的总分

实型数组aver,存放每个学生的平均分

voidSort(longnum[],intscore[][COURSE],intn,intsum[],floataver[])

inti,j,k,m;

inttemp1;

longtemp2;

floattemp3;

n-1;

k=i;

for(j=i+1;

j++)

if(sum[j]>

sum[k])k=j;

if(k!

=i)

temp1=sum[k];

sum[k]=sum[i];

sum[i]=temp1;

temp2=num[k];

num[k]=num[i];

num[i]=temp2;

temp3=aver[k];

aver[k]=aver[i];

aver[i]=temp3;

for(m=0;

m<

m++)

{

temp1=score[k][m];

score[k][m]=score[i][m];

score[i][m]=temp1;

}

}

打印出名次表,表格包括学生编号、各科分数、总分和平均分

voidPrint(longnum[],intscore[][COURSE],intn,intsum[],

floataver[])

NO\t|MT\tEN\tPH\tSUM\tAVER\n"

----------------------------------------------------\n"

%4ld\t|"

num[i]);

%4d\t"

score[i][j]);

%5d\t%5.0f\n"

sum[i],aver[i]);

在学号数组中顺序查找学生的学号

整型变量n,存放学生人数

长整型变量x,存放待查找学生的学号

找到时,返回学生学号再学号数组中的下标位置

否则,返回值-1

*/

intSearch(longnum[],intn,longx)

if(num[i]==x)return(i);

return(-1);

5↙

MTENPH

99010808783↙

99011909593↙

99012677887↙

99013768981↙

99014605645↙

NO

|

MT

EN

PH

SUM

AVER

--------------------------------------------------------------

99010

80

87

83

250

99011

90

95

93

278

99012

67

78

232

77

99013

76

89

81

246

82

99014

60

56

45

161

54

99012↙

NOMTENPHSUMAVER

49901267787423277

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1