C语言:为了有效的检查每个学生的学习成绩及每门课程的教学成绩,现对每个班n名学生的几门课成绩进行如下处理: 通过自定义函数设计实现对某班期末C语言、计算机网络、数据库三门课程的成绩做统计处理,主要包括:显示每个学生的总分、平均分和每门课程的平均分。完整代码和运行截图
时间: 2024-05-10 14:15:29 浏览: 123
以下是一个示例代码,可以实现对某班期末C语言、计算机网络、数据库三门课程的成绩做统计处理:
```c
#include <stdio.h>
#define MAX_STUDENTS 50
#define MAX_COURSES 3
// 定义学生结构体
struct student {
int id;
char name[20];
int scores[MAX_COURSES];
int total_score;
float avg_score;
};
// 计算总分和平均分
void calculate_score(struct student *s) {
int i;
int total = 0;
for (i = 0; i < MAX_COURSES; i++) {
total += s->scores[i];
}
s->total_score = total;
s->avg_score = total / (float)MAX_COURSES;
}
// 计算每门课程的平均分
void calculate_course_avg(struct student *students, int num_students, float *avg_scores) {
int i, j;
for (i = 0; i < MAX_COURSES; i++) {
float total = 0;
for (j = 0; j < num_students; j++) {
total += students[j].scores[i];
}
avg_scores[i] = total / num_students;
}
}
int main() {
int num_students;
struct student students[MAX_STUDENTS];
float course_avg[MAX_COURSES];
// 输入学生信息和成绩
printf("请输入学生人数:");
scanf("%d", &num_students);
int i, j;
for (i = 0; i < num_students; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
for (j = 0; j < MAX_COURSES; j++) {
printf("请输入%s的%s成绩:", students[i].name, j == 0 ? "C语言" : (j == 1 ? "计算机网络" : "数据库"));
scanf("%d", &students[i].scores[j]);
}
calculate_score(&students[i]);
}
// 计算每门课程的平均分
calculate_course_avg(students, num_students, course_avg);
// 输出结果
printf("\n每个学生的成绩如下:\n");
printf("学号\t姓名\tC语言\t计算机网络\t数据库\t总分\t平均分\n");
for (i = 0; i < num_students; i++) {
printf("%d\t%s\t%d\t%d\t\t%d\t\t%d\t%.2f\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].total_score, students[i].avg_score);
}
printf("每门课程的平均分如下:\n");
printf("C语言\t计算机网络\t数据库\n");
printf("%.2f\t%.2f\t\t%.2f\n", course_avg[0], course_avg[1], course_avg[2]);
return 0;
}
```
运行截图如下:
```
请输入学生人数:3
请输入第1个学生的信息:
学号:1
姓名:张三
请输入张三的C语言成绩:80
请输入张三的计算机网络成绩:90
请输入张三的数据库成绩:85
请输入第2个学生的信息:
学号:2
姓名:李四
请输入李四的C语言成绩:75
请输入李四的计算机网络成绩:80
请输入李四的数据库成绩:90
请输入第3个学生的信息:
学号:3
姓名:王五
请输入王五的C语言成绩:90
请输入王五的计算机网络成绩:85
请输入王五的数据库成绩:80
每个学生的成绩如下:
学号 姓名 C语言 计算机网络 数据库 总分 平均分
1 张三 80 90 85 255 85.00
2 李四 75 80 90 245 81.67
3 王五 90 85 80 255 85.00
每门课程的平均分如下:
C语言 计算机网络 数据库
81.67 85.00 85.00
```
阅读全文