题目
- 各个学生的平均分
- 各个课程的平均分
- 哪个学生哪一门分数最高
- 学生平均分方差
思考
- 当作表格来制作,也就是10*5的数组存储各个学生各门成绩
- 再多加一行当作课程平均分,多加一列当作学生平均分
- 在角底存入最高分数,至于查找最高分数对应的学生和课程可以在主函数对应查找
以下代码花了一段时间,中间数组有点把我搞懵了,不过问题不大
最开始反差出不来,再仔细看原来是我的方差最后设置为int类型导致失去精度了... ...
不过改完还是觉得方差比较离谱,哎哎哎,算了,不管了,开摆!!!
代码
#include<stdio.h>
void self_aver(double a[11][6])
{
int i = 0, j = 0;
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
a[i][5] = a[i][5] + a[i][j] / 5;
}
void class_aver(double a[11][6])
{
int i = 0, j = 0;
for (j = 0; j < 5; j++)
for (i = 0; i < 10; i++)
a[10][j] = a[10][j] + a[i][j] / 10;
}
void max_score(double a[11][6])
{
int i = 0, j = 0;
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
{
a[10][5] = (a[10][5] > a[i][j]) ? a[10][5] : a[i][j];
}
}
double fancha(double a[11][6])
{
int i = 0;
double n = 0, m = 0;
for (i = 0; i < 10; i++)
{
n = (a[i][5] * a[i][5]) / 10;
m = m + a[i][5];
}
n = n - (m / 5) * (m / 5);
return (n);
}
int main()
{
int i = 0, j = 0;
double a[11][6] = { 0 };
printf("请输入十名学生的各五门成绩:\n");
for (i = 0; i < 10; i++)
{
printf("第%d号学生的五门成绩分别为(用空格隔开):\n", i + 1);
scanf("%lf %lf %lf %lf %lf", &a[i][0], &a[i][1], &a[i][2], &a[i][3], &a[i][4]);
}
self_aver(a);
printf("各个学生自己的平均分为:\n");
for (i = 0; i < 10; i++)
printf("%d号学生的平均分为:%lf\n", i + 1, a[i][5]);
class_aver(a);
printf("\n\n各个课程平均分分别为:\n");
for (i = 0; i < 5; i++)
printf("第%d门课程所有学生平均分为:%lf\n", i + 1, a[10][i]);
max_score(a);
for (i = 0; i < 10; i++)
for (j = 0; j < 5; j++)
{
if (a[i][j] == a[10][5])
printf("第%d号学生第%d门课分数最高为%lf\n", i + 1, j + 1, a[10][5]);
}
double f = fancha(a);
printf("学生平均分方差为:%lf\n", f);
return 0;
}
Comments NOTHING