用C语言编程,输入2个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出最高的分数所对应的学生和课程;(4)求出每个学生平均分的方差:(1/n)(∑xi2) - ((∑xi)/ n)2。 **输入提示:"\n输入学生%4d的5个成绩:\n" **输入成绩格式:"%f" **输出提示:"\n 序号 课程1 2 3 4 5 平均分\n" **序号输出格式:"\n NO%2d" **成绩输出格式(提示:5个成绩):"%8.2f" **平均分输出提示:"\n课平均" **平均分输出格式:"%8.2f" **输出格示:"\n\n最高分%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
时间: 2024-03-29 09:37:42 浏览: 88
好的,这是一个比较复杂的问题,需要用到多个函数来实现。以下是程序实现:
```c
#include <stdio.h>
#include <math.h>
#define N 2 // 学生数
#define M 5 // 课程数
// 计算平均分
void average(float score[N][M], float avg[N], float avg_course[M]) {
int i, j;
for (i = 0; i < N; i++) {
avg[i] = 0;
for (j = 0; j < M; j++) {
avg[i] += score[i][j];
avg_course[j] += score[i][j];
}
avg[i] /= M;
}
for (j = 0; j < M; j++) {
avg_course[j] /= N;
}
}
// 找出最高分数所对应的学生和课程
void find_max(float score[N][M], int *student, int *course) {
float max_score = score[0][0];
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if (score[i][j] > max_score) {
max_score = score[i][j];
*student = i + 1;
*course = j + 1;
}
}
}
}
// 计算方差
float variance(float avg[N], float *var) {
int i;
float sum1 = 0, sum2 = 0;
for (i = 0; i < N; i++) {
sum1 += pow(avg[i], 2);
sum2 += avg[i];
}
*var = sum1 / N - pow(sum2 / N, 2);
}
int main() {
float score[N][M], avg[N] = {0}, avg_course[M] = {0}, var;
int i, j, student, course;
// 输入学生成绩
for (i = 0; i < N; i++) {
printf("\n输入学生%4d的5个成绩:\n", i + 1);
for (j = 0; j < M; j++) {
scanf("%f", &score[i][j]);
}
}
// 计算平均分
average(score, avg, avg_course);
// 输出表头
printf("\n 序号 课程1 2 3 4 5 平均分\n");
// 输出成绩和平均分
for (i = 0; i < N; i++) {
printf(" NO%2d", i + 1);
for (j = 0; j < M; j++) {
printf("%8.2f", score[i][j]);
}
printf("%8.2f\n", avg[i]);
}
// 输出课程平均分
printf("课平均");
for (j = 0; j < M; j++) {
printf("%8.2f", avg_course[j]);
}
// 找出最高分数所对应的学生和课程
find_max(score, &student, &course);
printf("\n\n最高分%8.2f是%d号学生的第%d门课\n", score[student - 1][course - 1], student, course);
// 计算方差
variance(avg, &var);
printf("\n方差 %8.2f\n", var);
return 0;
}
```
输出结果:
```
输入学生 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
```
阅读全文