- 输入4个学生5门课的成绩,分别用函数实现下列功能:
(1)计算每个学生的平均分;
(2)计算每门课的平均分;
(3)找出所有20个分数中最高的分数所对应的学生和课程。
我是打算自学C语言,在网上找了道题但是没找到答案,能不能写一个标准答案给我看看
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 云云豆酱 2022-11-02 18:21关注
文章链接 http://t.csdn.cn/iZVFd
代码如下:他写的很好,你可以看看,你的没有计算方差他写了,把计算方差的函数去掉就行了。希望对你有用
#include<stdio.h>
void st_avger(int s[5][4])//计算每个学生的平均分
{
int a,b,c123;
float s1[5],t=0;
for(a=0;a<5;a++)
{
for(b=0;b<4;b++)
{
t=t+s[a][b];
}
s1[a]=t;
t=0;
}
for(c123=0;c123<5;c123++)
printf("第%d个学生的平均成绩为%4.2f\n",c123,s1[c123]/4);
}
void sb_avger(int s[5][4])//计算每门课的平均分
{
int a,b;
float t=0;
for(a=0;a<4;a++)
{
for(b=0;b<5;b++)
t+=s[b][a];
printf("第%d门课的平均成绩为%4.2f\n",a+1,t/5);
t=0;
}
}
void max(int s[5][4])
{
int a3,b3,c3,t3,e3,f3,s3[20],s31[20];
for(a3=0;a3<5;a3++)
{
for(b3=0;b3<4;b3++)
s3[a3*4+b3]=s[a3][b3];//将二维数组降为一维数组
}
for(e3=0;e3<20;e3++)
s31[e3]=s3[e3];//复制一个1维数组,方便找出最大的数字是否重复
for(c3=0;c3<19;c3++)//找出数组最大的数字
if(s3[c3]>=s3[c3+1])
{
t3=s3[c3+1];
s3[c3+1]=s3[c3];
s3[c3]=t3;
}
for(f3=0;f3<20;f3++)//找出最大数字在数组中是否重复,并输出重复的位置
{
if(s31[f3]==s3[19])
printf("第%d个同学第%d门课分数最高,为%d\n",f3/4+1,f3%4+1,s31[f3]);/在一维数组里
每个同学占用四个位,所以很容易确定那个同学,成绩亦然/
}
}
void msv(int s[5][4])//计算平均分方差
{
int a,b,c;
float apex,xi2=0,xi=0,t=0,s1[5];
for(a=0;a<5;a++)//计算每一个同学成绩的平均值
{
for(b=0;b<4;b++)
t=t+s[a][b];//t储存每一个同学的总成绩
s1[a]=t/4;
t=0;
}
for(c=0;c<5;c++)
{
xi2+=s1[c]s1[c];
xi+=s1[c];
}
apex=(xi2)/5-(xi/5)(xi/5);//方差计算公式
printf("平均分方差:%f\n",apex);
}
int main ()
{
int s[5][4];
int a1,b1;
for(a1=0;a1<5;a1++)
for(b1=0;b1<4;b1++)
{
printf("输入第%d名同学的第%d门课的分数:",a1+1,b1+1);
scanf("%d",&s[a1][b1]);
}
st_avger(s);
sb_avger(s);
msv(s);
max(s);
return 0;
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效