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