输入10个学生5门课的成绩,分别用函数实现以下功能:1.计算每个学生的平均分2,计算每门课的平均分3.找出50个分数中最高的分数对应的学生和课程4.计算平均分方差。C语言要求不使用函数和结构体
时间: 2024-11-25 13:21:00 浏览: 4
在C语言中,由于不支持直接的函数和结构体,我们可以使用数组和循环来完成这个任务。假设我们有`scoreArray`存储学生的成绩,以及对应的科目信息。以下是简单的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_STUDENTS 10
#define NUM_SUBJECTS 5
#define MAX_SCORE 100
int main() {
int scores[NUM_STUDENTS][NUM_SUBJECTS]; // 学生成绩矩阵
int total_scores[NUM_SUBJECTS] = {0}; // 每门课总分
int max_score = 0;
int student_with_max = -1;
char course_with_max[64];
float sum_of_all = 0;
// 填充成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_SUBJECTS; j++) {
printf("请输入第%d个学生第%d门课的成绩: ", i+1, j+1);
scanf("%d", &scores[i][j]);
total_scores[j] += scores[i][j];
if (scores[i][j] > max_score) {
max_score = scores[i][j];
student_with_max = i;
sprintf(course_with_max, "第%d门课", j+1);
}
sum_of_all += scores[i][j];
}
}
// 计算平均分
float average_per_student[NUM_SUBJECTS];
for (int j = 0; j < NUM_SUBJECTS; j++) {
average_per_student[j] = (float)total_scores[j] / NUM_STUDENTS;
printf("第%d门课的平均分为: %.2f\n", j+1, average_per_student[j]);
}
printf("最高分(%d分)的学生是第%d名,在%s这门课上。\n", max_score, student_with_max + 1, course_with_max);
// 计算所有学生的平均分
float overall_average = (float)sum_of_all / (NUM_STUDENTS * NUM_SUBJECTS);
printf("所有学生的平均分为: %.2f\n", overall_average);
// 计算方差
float variance = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_SUBJECTS; j++) {
variance += pow(scores[i][j] - overall_average, 2);
}
}
variance /= (NUM_STUDENTS * NUM_SUBJECTS);
printf("方差为: %.2f\n", variance);
return 0;
}
```
阅读全文