c语言输入多个学生多门课程的成绩,分别别某每个学生的平均成集和每门课程的平均成绩
时间: 2024-12-08 19:13:51 浏览: 23
在C语言中,输入多个学生多门课程的成绩并计算他们的平均成绩以及每门课程的平均成绩,可以使用结构体、数组和循环来实现。以下是一个简单的示例:
```c
#include <stdio.h>
// 定义学生信息结构
typedef struct {
char name[50]; // 学生姓名
int scores[10]; // 课程成绩数组,假设一共有10门课程
int num_courses; // 实际学习课程数
} Student;
void input_scores(Student* students, int num_students) {
for (int i = 0; i < num_students; i++) {
printf("请输入学生 %s 的课程成绩(输入空格分隔,最多10门课程):\n", students[i].name);
scanf("%d ", &students[i].scores[0]);
students[i].num_courses = 0;
for (int j = 1; j <= 9 && scanf("%d", &students[i].scores[j]) == 1; j++) { // 防止输入错误导致数组越界
if (students[i].scores[j] != 0) {
students[i].num_courses++;
}
}
getchar(); // 清除上一行回车
}
}
double average_score(Student student) {
double total = 0;
if (student.num_courses > 0) {
for (int i = 0; i < student.num_courses; i++) {
total += student.scores[i];
}
return total / student.num_courses;
} else {
return 0; // 如果没有输入成绩,返回0
}
}
int main() {
int num_students;
printf("请输入学生人数:");
scanf("%d", &num_students);
Student students[num_students];
input_scores(students, num_students);
for (int i = 0; i < num_students; i++) {
double avg_student = average_score(students[i]);
printf("学生 %s 的平均成绩是:%.2f\n", students[i].name, avg_student);
// 计算每门课程的平均成绩
printf("学生 %s 每门课程的平均成绩(如果有输入):\n", students[i].name);
for (int j = 0; j < students[i].num_courses; j++) {
printf("课程 %d: %.2f\n", j + 1, students[i].scores[j] / students[i].num_courses);
}
printf("\n");
}
return 0;
}
```
这个程序首先获取学生人数,然后输入每个学生的姓名及成绩。接着,它计算每个学生的平均成绩,并打印出每门课程的平均成绩。
阅读全文