输入2个学生5门课的成绩,分别用函数求:
(1)每个学生的平均分;
(2)每门课的平均分;
(3)找出最高的分数所对应的学生和课程;
(4)求出每个学生平均分的方差:(1/n)(∑xi2) - ((∑xi)/ n)
tips: 输入提示:"n输入学生%4d的5个成绩:n"
输入成绩格式:"%f"
输出提示:"n 序号 课程1 2 3 4 5 平均分n"
序号输出格式:"n NO%2d"
成绩输出格式(提示:5个成绩):"%8.2f"
平均分输出提示:"n课平均"
平均分输出格式:"%8.2f"
输出格式:"nn最高分%8.2f是%d号学生的第%d门课n"
输出格式:"n方差 %8.2f"
程序运行示例(题库格式太难看了,直接看输出截图吧):
↙ 输入学生 1的5个成绩:↙ 89 96 88 90 76↙ ↙ 输入学生 2的5个成绩:↙ 66 89 87 85 67↙ ↙ 序号 课程1 2 3 4 5 平均分↙ ↙ NO 1 89.00 96.00 88.00 90.00 76.00 87.80↙ NO 2 66.00 89.00 87.00 85.00 67.00 78.80↙ 课平均 77.50 92.50 87.50 87.50 71.50↙ ↙ 最高分 96.00是1号学生的第2门课↙ ↙ 方差 20.25
解法一开始上网搜没搜到,搜到个类似的,结果发现好多地方都不一样,于是乎大改,和自己写差不多了。
#include#include int main() { double ss[5][2]; int i, x, y, z, j; double average_ps(int n, double ss[5][2]); double average_ec(int n, double ss[5][2]); double p[2], pfqh, qh, d; double max = 0; int id, courseId; for (z = 0; z < 2; z++) { printf("n输入学生%4d的5个成绩:n", z + 1); for (j = 0; j < 5; j++) { scanf("%lf", &ss[j][z]); if (ss[j][z] > max) { max = ss[j][z]; id = z; courseId = j; } } } //分别录入5个学生的3门成绩 printf("n 序号 课程1 2 3 4 5 平均分n"); for (y = 0; y < 2; y++) { p[y] = average_ps(y, ss); printf("n NO%2d", y + 1); for (int j = 0; j < 5; j++) { printf("%8.2f", ss[j][y]); } printf("%8.2f", p[y]); } //输出每个学生的平均分 printf("n课平均"); for ( x = 0; x < 5 ; x++) { printf("%8.2lf", average_ec(x, ss)); } //输出每科成绩的平均分 printf("nn最高分%8.2f是%d号学生的第%d门课n", max, id + 1, courseId + 1); for (i = 0, pfqh = 0, qh = 0; i < 2; i++) { pfqh += p[i] * p[i]; qh += p[i]; } d = pfqh / 2 - pow(qh / 2, 2); //计算平均分方差 printf("n方差 %8.2f", d); return 0; } double average_ps(int n, double ss[5][2]) { int x; double sum; sum = (ss[0][n] + ss[1][n] + ss[2][n] + ss[3][n] + ss[4][n]) / 5; return sum; } //求每个学生的平均分 double average_ec(int n, double ss[5][2]) { int i; double sum = 0, average; for (i = 0; i < 2; i++) { sum = sum + ss[n][i]; } average = sum / 2; return average; } //计算各科成绩的平均值



