设计学生成绩管理系统:要求
(1) 有N个学生,每个学生的信息包含学号,姓名,和M门课的成绩
即有结构体数组
#define N 30
#define M 5
struct student
{
char num[10];
char name[20];
float score[M];
float stu_avg;
float cource_avg;
}stu[N]
(2) 利用函数void input(struct student *p,int n, int m ) 完成数据的输入
(3) 利用函数 void process(struct student *p, int n, int m) 计算每个学生M门课的平均成绩;
(4) 利用函数 void output(struct student *p, int n, int m) 将处理结果输出;
(5) 设计main()函数进行测试。
程序代码:
#include <stdio.h>
#define N 30
#define M 5
// 定义学生结构体
struct student {
char num[10]; // 学号
char name[20]; // 姓名
float score[M]; // M门课的成绩
float stu_avg; // 学生平均成绩
} stu[N];
// 数据输入函数
void input(struct student *p, int n, int m) {
for (int i = 0; i < n; i++) {
printf("输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", p[i].num);
printf("姓名:");
scanf("%s", p[i].name);
for (int j = 0; j < m; j++) {
printf("课程%d成绩:", j + 1);
scanf("%f", &p[i].score[j]);
}
}
}
// 处理数据函数:计算每个学生的平均成绩
void process(struct student *p, int n, int m) {
for (int i = 0; i < n; i++) {
float sum = 0;
for (int j = 0; j < m; j++) {
sum += p[i].score[j];
}
p[i].stu_avg = sum / m;
}
}
// 输出结果函数
void output(struct student *p, int n, int m) {
for (int i = 0; i < n; i++) {
printf("学生:%s (%s)\n", p[i].name, p[i].num);
printf("各科成绩:");
for (int j = 0; j < m; j++) {
printf("%.2f ", p[i].score[j]);
}
printf("\n平均成绩:%.2f\n", p[i].stu_avg);
}
}
// 主函数
int main() {
printf("请输入%d个学生的信息,每个学生有%d门课程的成绩。\n", N, M);
input(stu, N, M);
process(stu, N, M);
output(stu, N, M);
return 0;
}
在这个程序中,首先定义了一个student
结构体,用于存储每个学生的学号、姓名和成绩。接着,实现了input
、process
和output
三个函数,分别用于输入数据、处理数据和输出结果。最后,在main
函数中,我们调用这些函数来实现整个流程。
运行实例: