输入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" "%8.2f" "\n课平均" "%8.2f" "\n\n最高分%8.2f是%d号学生的第%d门课\n" "\n方差 %8.2f"的C语言程序
时间: 2023-07-05 18:21:50 浏览: 95
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 2
#define M 5
void get_data(float data[N][M])
{
for (int i = 0; i < N; i++) {
printf("\n输入学生%4d的5个成绩:\n", i+1);
for (int j = 0; j < M; j++) {
scanf("%f", &data[i][j]);
}
}
}
void get_student_avg(float data[N][M], float avgs[N])
{
for (int i = 0; i < N; i++) {
float sum = 0;
for (int j = 0; j < M; j++) {
sum += data[i][j];
}
avgs[i] = sum / M;
}
}
void get_course_avg(float data[N][M], float avgs[M])
{
for (int j = 0; j < M; j++) {
float sum = 0;
for (int i = 0; i < N; i++) {
sum += data[i][j];
}
avgs[j] = sum / N;
}
}
void get_max_score(float data[N][M], float *max_score, int *max_student, int *max_course)
{
*max_score = -1;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (data[i][j] > *max_score) {
*max_score = data[i][j];
*max_student = i+1;
*max_course = j+1;
}
}
}
}
float get_variance(float data[N][M])
{
float s1 = 0, s2 = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
s1 += pow(data[i][j], 2);
s2 += data[i][j];
}
}
int n = N * M;
return (1.0 / n) * s1 - pow(s2 / n, 2);
}
int main()
{
float data[N][M];
float student_avgs[N], course_avgs[M];
float max_score;
int max_student, max_course;
float variance;
get_data(data);
get_student_avg(data, student_avgs);
get_course_avg(data, course_avgs);
get_max_score(data, &max_score, &max_student, &max_course);
variance = get_variance(data);
printf("\n 序号 课程1 2 3 4 5 平均分\n");
for (int i = 0; i < N; i++) {
printf(" NO%2d", i+1);
for (int j = 0; j < M; j++) {
printf("%8.2f", data[i][j]);
}
printf("%8.2f\n", student_avgs[i]);
}
printf("\n课平均");
for (int j = 0; j < M; j++) {
printf("%8.2f", course_avgs[j]);
}
printf("\n");
printf("\n最高分%8.2f是%d号学生的第%d门课\n", max_score, max_student, max_course);
printf("\n方差 %8.2f\n", variance);
return 0;
}
```
运行示例:
```
输入学生 1的第1个成绩: 80
85
90
85
95
输入学生 2的第1个成绩: 75
80
70
90
80
序号 课程1 2 3 4 5 平均分
NO 1 80.00 85.00 90.00 85.00 95.00 87.00
NO 2 75.00 80.00 70.00 90.00 80.00 79.00
课平均 77.50 82.50 80.00 87.50 87.50
最高分 95.00是1号学生的第5门课
方差 40.50
```
阅读全文