题7.14:输人10个学生5门课的成绩, 分别用函数实现下列功能: ①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差

题目

本题是谭浩强《C程序设计课后习题》题7.14。
题目:
输人10个学生5门课的成绩, 分别用函数实现下列功能:
①计算每个学生的平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj

一、解题思路

思路:
根据题目进行函数定义,最后一个函数是求方差,将方差公式转换成代码即可。

二、代码部分

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

#define M 10//10个学生
#define N 5//5门课程
float stuavg[M];//用于存放每个学生的平均分
float courseavg[N];//用于存放每门课程的平均分
int i, j;
void savg(float score[][N])//①计算每个学生的平均分;
{
	for (i = 0; i < M; i++)
	{
		float sum = 0.0;
		for (j = 0; j < N; j++)
		{
			sum += score[i][j];
		}
		stuavg[i] = sum / N;
	}
	for (i = 0; i < M; i++)
		printf("第%d个学生的平均成绩为:%.2f\n", i + 1, stuavg[i]);
}
void cavg(float score[][N])//②计算每门课的平均分;
{
	for (i = 0; i < N; i++)
	{
		float sum = 0.0;
		for (j = 0; j <M; j++)
		{
			sum += score[j][i];
		}
		courseavg[i] = sum / M;
	}
	for (i = 0; i < N; i++)
		printf("第%d门课程的平均分为:%.2f\n", i + 1, courseavg[i]);
}
void findmax(float score[][N])//③找出所有50个分数中最高的分数所对应的学生和课程;
{
	float max = score[0][0];
	int x, y;
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++)
			if (max < score[i][j])
			{
				max = score[i][j];
				x = i;
				y = j;
			}
	}
	printf("所有50个分数中最高的分数为:%.2f所对应的学生是第%d个,课程是第%d个.\n", max, x + 1, y + 1);
}
void sum(float score[][N])//④计算平均分方差:
{
	float sum1 = 0.0;//平均分平方和
	float sum2 = 0.0;//平均分和
	for (i = 0; i < M; i++)
	{
		sum1 += stuavg[M] * stuavg[M];
		sum2 += stuavg[M];
	}
	printf("平均分方差为:%.2f", sum1 / M - (sum2 / M) * (sum2 / M));
}
void main()
{
	float score[M][N] = { 0 };
	for (i = 0; i < M; i++)
	{
		printf("请输入第%d名学生的%d门成绩:", i + 1, N);
		for (j = 0; j < N; j++)
		{
			scanf("%f", &score[i][j]);
		}
	}
	savg(score);
	cavg(score);
	findmax(score);
	sum(score);
}

三、执行结果

在这里插入图片描述

输入:

请输入第2名学生的5门成绩:1 2 3 4 5
请输入第3名学生的5门成绩:1 2 3 4 5
请输入第4名学生的5门成绩:1 2 3 4 5
请输入第5名学生的5门成绩:1 2 3 4 5
请输入第6名学生的5门成绩:1 2 3 4 5
请输入第7名学生的5门成绩:1 2 3 4 5
请输入第8名学生的5门成绩:1 2 3 4 5
请输入第9名学生的5门成绩:1 2 3 4 5
请输入第10名学生的5门成绩:1 2 3 4 50

输出:

1个学生的平均成绩为:3.002个学生的平均成绩为:3.003个学生的平均成绩为:3.004个学生的平均成绩为:3.005个学生的平均成绩为:3.006个学生的平均成绩为:3.007个学生的平均成绩为:3.008个学生的平均成绩为:3.009个学生的平均成绩为:3.0010个学生的平均成绩为:12.001门课程的平均分为:1.002门课程的平均分为:2.003门课程的平均分为:3.004门课程的平均分为:4.005门课程的平均分为:9.50
所有50个分数中最高的分数为:50.00所对应的学生是第10个,课程是第5.
平均分方差为:0.00
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志冲海大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值