用c语言结构体编写学生成绩管理系统
时间: 2023-09-20 22:11:47 浏览: 102
好的,以下是一个简单的学生成绩管理系统的程序,使用了结构体来存储学生信息和成绩信息。
```c
#include <stdio.h>
#include <string.h>
#define MAX_NUM 30
#define MAX_NAME_LEN 20
// 定义结构体
struct student {
char name[MAX_NAME_LEN];
int chinese;
int math;
int english;
float average;
};
// 函数声明
void input(struct student *p, int n);
void output(struct student *p, int n);
int main() {
struct student stu[MAX_NUM];
int n;
printf("请输入学生人数(最多为%d):", MAX_NUM);
scanf("%d", &n);
input(stu, n); // 输入学生信息和成绩
output(stu, n); // 输出学生信息和成绩
return 0;
}
// 输入学生信息和成绩
void input(struct student *p, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", p[i].name);
printf("请输入第%d个学生的语文成绩:", i + 1);
scanf("%d", &p[i].chinese);
printf("请输入第%d个学生的数学成绩:", i + 1);
scanf("%d", &p[i].math);
printf("请输入第%d个学生的英语成绩:", i + 1);
scanf("%d", &p[i].english);
// 计算平均分
p[i].average = (p[i].chinese + p[i].math + p[i].english) / 3.0;
}
}
// 输出学生信息和成绩
void output(struct student *p, int n) {
printf("学生姓名\t语文成绩\t数学成绩\t英语成绩\t平均分\n");
for (int i = 0; i < n; i++) {
printf("%s\t\t%d\t\t%d\t\t%d\t\t%.2f\n", p[i].name, p[i].chinese, p[i].math, p[i].english, p[i].average);
}
}
```
这个程序可以实现输入学生的姓名和成绩,自动计算平均分,并输出学生的姓名、成绩和平均分。需要注意的是,这里使用了指向结构体的指针来传递结构体数组,可以避免在函数调用过程中进行大量的数组复制,提高程序效率。
阅读全文