设计一个程序统计某个班全体学生3门课的考试成绩。要求能输入学生人数,并按编号从小到大的顺序依次输入学生的成绩,再统计出每门课程的全班总分、平均分及每个考生所有考试的总分和平均分。的C语言程序
时间: 2024-09-28 09:04:06 浏览: 67
如何对学生考试成绩进行数据分析范文.doc
设计一个C语言程序来实现这个功能,首先需要定义结构体来存储学生信息,包括编号和三门课的成绩。然后,你可以使用循环结构接收用户输入,利用数组或动态内存分配存储所有学生的数据。最后,遍历数据计算所需的统计数据。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int student_id;
float course1_score;
float course2_score;
float course3_score;
} Student;
int main() {
int num_students;
// 输入学生人数
printf("请输入学生人数:");
scanf("%d", &num_students);
// 动态分配内存
Student* students = (Student*) malloc(num_students * sizeof(Student));
if (!students) {
printf("内存分配失败!\n");
return 1;
}
// 接收并存储学生成绩
for (int i = 0; i < num_students; i++) {
printf("请输入学生%d的成绩(第1门:第2门:第3门):", i + 1);
scanf("%d:%f:%f", &students[i].student_id, &students[i].course1_score, &students[i].course2_score, &students[i].course3_score);
}
// 计算统计数据
float total_course1 = 0, avg_course1 = 0, total_course2 = 0, avg_course2 = 0, total_course3 = 0, avg_course3 = 0;
float total_student = 0, avg_student = 0;
for (int i = 0; i < num_students; i++) {
total_course1 += students[i].course1_score;
total_course2 += students[i].course2_score;
total_course3 += students[i].course3_score;
total_student += students[i].course1_score + students[i].course2_score + students[i].course3_score;
avg_course1 /= num_students;
avg_course2 /= num_students;
avg_course3 /= num_students;
avg_student /= num_students;
}
// 输出结果
printf("\n课程1总分:%.2f,平均分:%.2f\n", total_course1, avg_course1);
printf("课程2总分:%.2f,平均分:%.2f\n", total_course2, avg_course2);
printf("课程3总分:%.2f,平均分:%.2f\n", total_course3, avg_course3);
printf("每位学生的总分:%.2f,平均分:%.2f\n", total_student / num_students, avg_student);
// 释放内存
free(students);
return 0;
}
阅读全文