求求各位大佬帮忙解决一下孩子的作业吧

14.输入10个学生5门课的成绩,分别用函数实现下列功能: ①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差: 参考成绩管理系统,设计一个系统,实现14题的4个功能,同时增加: 1.按学生总分从高到低排序输出 2.求出每门课所有分数对应级别的数量和百分比,例如将等级分为A,B,C,D,课程1的A级有多少人,占百分比多少,B级有多少人,占比多少,如此类推。 怎么实现全部功能呀?

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <algorithm>

using namespace std;
int main()
{
	int buf[10][5] = {0}; //保存所有成绩
	float avstu[10] ={0};   //每个学生的平均
	float avkc[5] = {0};    //每科的平均
	for (int i = 0; i <10; i++)
	{
		printf("请输入每个学生的成绩\n");
		scanf("%d %d %d %d %d",&buf[i][0],&buf[i][1],&buf[i][2],&buf[i][3],&buf[i][4]);
	}
	//1计算学生的平均分
	printf("每个学生的平均分:\n");
	for (int i = 0; i < 10; i++)
	{
		float sum = 0.0;
		for (int j = 0; j <5;j++)
		{
			sum += buf[i][j];
		}
		avstu[i] = sum/5.0;
		printf("%.2f\n",avstu[i]);
	}
	//2计算科目的平均分
	printf("每个科目的平均分:\n");
	for (int i = 0; i < 5;i++)
	{
		float sum = 0.0;
		for (int j = 0; j < 10; j++)
		{
			sum += buf[j][i];
		}
		avkc[i] = sum / 10.0;
		printf("%.2f\n",avkc[i]);
	}
	//3找最高分
	int indexx = 0;
	int indexy = 0;
	int max = buf[0][0];
	for (int i = 0; i < 10;i++)
	{
		for (int j = 0; j < 5;j++)
		{
			if (buf[i][j] > max)
			{
				indexx = i;
				indexy = j;
				max = buf[i][j];
			}
		}
	}
	printf("最高分:%d,学生(从0开始编号):%d,课程(从0开始编号):%d",max,indexx,indexy);
	//4.每个科目的方差
	float fc[5] = {0};
	printf("各科均分方差:\n");
	for (int i = 0; i <5; i++)
	{
		float d = 0.0;
		for (int j = 0;j < 10;j++)
		{
			d += (buf[j][i] - avkc[i])*(buf[j][i] - avkc[i]);
		}
		fc[i] = d/10.0;
		printf("%f\n",fc[i]);
	}



	//总分由高到底排序
	//计算总分
	int zfs[10] = {0};
	for (int i = 0; i < 10; i++)
	{
		int sum = 0;
		for (int j = 0; j < 5; j++)
		{
			sum += buf[i][j];
		}
		zfs[i] = sum;
	}
	int indsort[10] = {0};
	for (int i = 0; i < 10; i++)
	{
		indsort[i] = i;
	}
	
	sort(indsort,indsort+10,[&](const int& a, const int& b){
		return (zfs[a] > zfs[b]);
	});

	printf("按总分数由高到低排序:\n");
	for (int i = 0; i < 10; i++)
	{
		int ii = indsort[i];
		printf("%d,%d\n",ii,zfs[ii]);
	}



	//5.每个科目A/B/C级别的比例

	int bl[5][3] = {0};
	for (int i = 0; i < 5; i++)
	{
		int cntA = 0;
		int cntB = 0;
		int cntC = 0;
		for (int j = 0; j < 10;j++)
		{
			if (buf[j][i] >= 90) //>90认为A
			{
				cntA++;
			}else if (buf[j][i] >= 80 && buf[j][i] < 90)
			{
				cntB++;
			}else
				cntC++;
		}
		bl[i][0] = cntC;
		bl[i][1] = cntB;
		bl[i][2] = cntC;
		printf("科目%d的A数量=%d,B数量=%d,C数量=%d\n",i,cntA,cntB,cntC);
	}
	getchar();
	getchar();
	return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632