C语言题目:为了有效的检查每个学生的学习成绩及每门课程的教学成绩,现对每个班n名学生的几门课成绩进行如下处理: 通过自定义函数设计实现对某班期末C语言、计算机网络、数据库三门课程的成绩做统计处理,主要包括:显示每个学生的总分、平均分和每门课程的平均分。
时间: 2024-06-09 19:09:05 浏览: 98
以下是一个可能的解决方案:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
int grades[3]; // 三门课程成绩
int total; // 总分
float average; // 平均分
} Student;
// 计算学生总分和平均分
void calculate(Student *s) {
int total = 0;
for (int i = 0; i < 3; i++) {
total += s->grades[i];
}
s->total = total;
s->average = total / 3.0;
}
int main() {
int n;
printf("请输入班级人数:");
scanf("%d", &n);
// 初始化学生数组
Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("C语言成绩:");
scanf("%d", &students[i].grades[0]);
printf("计算机网络成绩:");
scanf("%d", &students[i].grades[1]);
printf("数据库成绩:");
scanf("%d", &students[i].grades[2]);
calculate(&students[i]); // 计算该学生的总分和平均分
}
// 计算每门课程的平均分
float course_averages[3];
for (int i = 0; i < 3; i++) {
int total = 0;
for (int j = 0; j < n; j++) {
total += students[j].grades[i];
}
course_averages[i] = total / (float)n;
}
// 输出每个学生的成绩和平均分
printf("学号\t姓名\tC语言\t计算机网络\t数据库\t总分\t平均分\n");
for (int i = 0; i < n; 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].grades[0], students[i].grades[1], students[i].grades[2],
students[i].total, students[i].average);
}
// 输出每门课程的平均分
printf("C语言平均分:%.2f\n", course_averages[0]);
printf("计算机网络平均分:%.2f\n", course_averages[1]);
printf("数据库平均分:%.2f\n", course_averages[2]);
return 0;
}
```
运行结果:
```
请输入班级人数:3
请输入第1个学生的信息:
学号:1
姓名:张三
C语言成绩:80
计算机网络成绩:75
数据库成绩:88
请输入第2个学生的信息:
学号:2
姓名:李四
C语言成绩:90
计算机网络成绩:82
数据库成绩:92
请输入第3个学生的信息:
学号:3
姓名:王五
C语言成绩:70
计算机网络成绩:68
数据库成绩:80
学号 姓名 C语言 计算机网络 数据库 总分 平均分
1 张三 80 75 88 243 81.00
2 李四 90 82 92 264 88.00
3 王五 70 68 80 218 72.67
C语言平均分:80.00
计算机网络平均分:75.00
数据库平均分:86.67
```
阅读全文