c语言设计成绩记录薄,记录学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分
时间: 2023-07-10 10:32:09 浏览: 35
好的,以下是一个基于C语言的简单程序,用于记录学生的成绩记录薄,并计算每门课程的平均分数和选修人数。程序使用结构体来保存每个学生的信息,包括学号、姓名、课程编号、课程名称、成绩和学分。然后,程序将学生信息存储在一个数组中,并按课程编号对学生进行分组。最后,程序将输出每门课程的平均分数和选修人数。
```c
#include <stdio.h>
#include <string.h>
struct student {
char name[50];
int student_id;
int course_id;
char course_name[50];
int score;
int credit;
};
struct course {
int course_id;
char course_name[50];
int total_score;
int count;
};
int main() {
struct student students[100];
struct course courses[100];
int student_count = 0, course_count = 0;
// 输入学生信息
printf("请输入学生信息:\n");
printf("学号 姓名 课程编号 课程名称 成绩 学分\n");
while (1) {
int student_id, course_id, score, credit;
char name[50], course_name[50];
scanf("%d %s %d %s %d %d", &student_id, name, &course_id, course_name, &score, &credit);
// 如果输入的学号是0,则结束输入
if (student_id == 0) {
break;
}
// 将学生信息存储在数组中
struct student s;
strcpy(s.name, name);
s.student_id = student_id;
s.course_id = course_id;
strcpy(s.course_name, course_name);
s.score = score;
s.credit = credit;
students[student_count++] = s;
// 统计每门课程的平均分数和选修人数
int found = 0;
for (int i = 0; i < course_count; i++) {
if (course_id == courses[i].course_id) {
courses[i].total_score += score;
courses[i].count++;
found = 1;
break;
}
}
if (!found) {
courses[course_count].course_id = course_id;
strcpy(courses[course_count].course_name, course_name);
courses[course_count].total_score = score;
courses[course_count].count = 1;
course_count++;
}
}
// 输出每门课程的平均分数和选修人数
printf("课程编号 课程名称 平均分 选修人数\n");
for (int i = 0; i < course_count; i++) {
int course_id = courses[i].course_id;
char* course_name = courses[i].course_name;
float avg_score = (float)courses[i].total_score / courses[i].count;
int count = courses[i].count;
printf("%d %s %.2f %d\n", course_id, course_name, avg_score, count);
}
return 0;
}
```
在上面的程序中,我们首先定义了一个结构体 `student` 来保存每个学生的信息,然后定义了另一个结构体 `course` 来保存每门课程的信息。程序使用两个数组 `students` 和 `courses` 来分别存储学生和课程的信息。在输入学生信息时,程序将每个学生的信息存储在 `students` 数组中,并在每个课程信息中记录该课程的选修人数和总成绩,以便最后计算平均分数。最后,程序输出每门课程的平均分数和选修人数。