1、 按以下要求编写一个学生成绩处理程序: (1) 定义一个包括:学号、姓名、性别、年龄和三门课成绩(语文、数学、外语)的结构体类型struct Student。 (2) 在主函数中定义一个包括5个元素的struct Student类型的数组students。前3个学生给定初值,后两个学生的信息在main函数中调用下面的input函数从键盘输入。 (3) 实现一个画横线的函数line, 用于绘制由n个字符c输出组成的行线,函数原形如下: void line(char c,int n); 参数: c:要输出的字符,n:输出多少个 (4) 实现输入一个学生信息的函数input,函数原型如下: void input( struct Student * stud ); 参数:stud:指向要输入的学生的结构体变量或数组元素 (5) 实现输出一个学生信息的函数print,在一行中输出参数指定学生的所有信息、成绩、总分和平均分,函数原型如下: void print( struct Student * stud ); 参数:stud:指向要输出的学生的结构体变量或数组元素 (6) 实现一个输出所有学生信息的函数print_all,在该函数中输出表头,并调用print函数输出每个学生的信息及其总分和平均分,最后输出所有学生各门课(含个人总分和均分)的平均分。其原型如下: void print_all( struct Student * studs,int n ); 参数:studs:指向结构体数组的第一个元素,n:数组元素的个数 (7) 在主函数中调用input 函数输入后两个学生的信息,调用print_all函数输出所有学生的信息和各门课的平均分(含所有人总分和均分的平均分)。
时间: 2024-02-28 12:53:16 浏览: 132
C语言课程设计代码(学生成绩管理系统)可直接运行
好的,我可以帮你解答。以下是按照要求编写的学生成绩处理程序的完整代码:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char id[20];
char name[20];
char gender[10];
int age;
float scores[3];
float total_score;
float average_score;
};
void line(char c, int n);
void input(struct Student *stud);
void print(struct Student *stud);
void print_all(struct Student *studs, int n);
int main() {
struct Student students[5] = {
{"001", "张三", "男", 18, {78, 89, 95}},
{"002", "李四", "女", 19, {85, 92, 88}},
{"003", "王五", "男", 20, {90, 87, 93}}
};
input(&students[3]);
input(&students[4]);
print_all(students, 5);
return 0;
}
void line(char c, int n) {
for (int i = 0; i < n; i++) {
putchar(c);
}
putchar('\n');
}
void input(struct Student *stud) {
printf("请输入学生的学号、姓名、性别、年龄和三门课成绩:\n");
scanf("%s %s %s %d %f %f %f", stud->id, stud->name, stud->gender, &stud->age, &stud->scores[0], &stud->scores[1], &stud->scores[2]);
}
void print(struct Student *stud) {
printf("%-10s%-10s%-10s%-10d%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f\n", stud->id, stud->name, stud->gender, stud->age, stud->scores[0], stud->scores[1], stud->scores[2], stud->total_score, stud->average_score);
}
void print_all(struct Student *studs, int n) {
float average_scores[3] = {0};
printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n", "学号", "姓名", "性别", "年龄", "语文", "数学", "外语", "总分", "平均分");
line('-', 80);
for (int i = 0; i < n; i++) {
studs[i].total_score = studs[i].scores[0] + studs[i].scores[1] + studs[i].scores[2];
studs[i].average_score = studs[i].total_score / 3;
print(&studs[i]);
for (int j = 0; j < 3; j++) {
average_scores[j] += studs[i].scores[j];
}
average_scores[3] += studs[i].total_score;
average_scores[4] += studs[i].average_score;
}
line('-', 80);
printf("%-10s%-10s%-10s%-10s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f\n", "平均分", "", "", "", average_scores[0] / n, average_scores[1] / n, average_scores[2] / n, average_scores[3] / n, average_scores[4] / n);
}
```
在这个程序中,我们首先定义了一个包括学号、姓名、性别、年龄和三门课成绩的结构体类型struct Student。然后在主函数中定义了一个包括5个元素的struct Student类型的数组students,并给前3个学生赋了初值。接下来,我们实现了一个画横线的函数line和一个输入一个学生信息的函数input,用于从键盘输入学生的信息。我们还实现了一个输出一个学生信息的函数print,在一行中输出学生的所有信息、成绩、总分和平均分。最后,我们实现了一个输出所有学生信息的函数print_all,输出表头,并调用print函数输出每个学生的信息及其总分和平均分,最后输出所有学生各门课(含个人总分和均分)的平均分。
在主函数中,我们调用input函数输入后两个学生的信息,调用print_all函数输出所有学生的信息和各门课的平均分(含所有人总分和均分的平均分)。
阅读全文