weixin_57715545 2021-05-16 14:20 采纳率: 100%
浏览 90
已采纳

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

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

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-16 15:16
    关注

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

    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?