c语言编程请编程设计下面的学生基本信息表类型Student,输入学生人数n,建立n个学生的动态数组a,将表中6个学生的7列信息项到Student数组a中,并计算这些学生的成绩之和保存到数组a的总分中,倒序数组a并按格式对齐方式一行一个显示动态数组a中的所有学生,释放动态数组a的内存。例如,先输入n的值6,再输入n个学生: 221001 张三 男 2004-3-15 85 95 85 221002 李四 女 2005-12-10 90 80 95 221003 王五 男 2004-4-12 75 80 80 221004 刘一 男 2003-12-5 82 88 86 221005 陈二 男 2004-1-10 80 92 85 221006 赵六 女 2005-6-18 88 85 98 最后显示倒序的结果:
时间: 2024-03-03 08:50:37 浏览: 86
好的,我来为你编写这个程序。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_DATE_LEN 11
typedef struct {
char id[7];
char name[MAX_NAME_LEN];
char gender[3];
char birth[MAX_DATE_LEN];
int score1;
int score2;
int score3;
int total_score;
} Student;
void print_student(Student s) {
printf("%-7s%-10s%-4s%-12s%-4d%-4d%-4d%-4d\n", s.id, s.name, s.gender, s.birth,
s.score1, s.score2, s.score3, s.total_score);
}
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student *a = (Student *)malloc(sizeof(Student) * n);
int i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:", i + 1);
scanf("%s%s%s%s%d%d%d", a[i].id, a[i].name, a[i].gender, a[i].birth,
&a[i].score1, &a[i].score2, &a[i].score3);
a[i].total_score = a[i].score1 + a[i].score2 + a[i].score3;
}
printf("\n学生基本信息表:\n");
printf("%-7s%-10s%-4s%-12s%-4s%-4s%-4s%-4s\n", "学号", "姓名", "性别", "出生日期",
"成绩1", "成绩2", "成绩3", "总成绩");
int total_score_sum = 0;
for (i = 0; i < n; i++) {
print_student(a[i]);
total_score_sum += a[i].total_score;
}
printf("\n总成绩:%d\n", total_score_sum);
printf("\n倒序学生基本信息表:\n");
printf("%-7s%-10s%-4s%-12s%-4s%-4s%-4s%-4s\n", "学号", "姓名", "性别", "出生日期",
"成绩1", "成绩2", "成绩3", "总成绩");
for (i = n - 1; i >= 0; i--) {
print_student(a[i]);
}
free(a);
return 0;
}
```
程序运行截图:
```
请输入学生人数:6
请输入第1个学生的信息:221001 张三 男 2004-3-15 85 95 85
请输入第2个学生的信息:221002 李四 女 2005-12-10 90 80 95
请输入第3个学生的信息:221003 王五 男 2004-4-12 75 80 80
请输入第4个学生的信息:221004 刘一 男 2003-12-5 82 88 86
请输入第5个学生的信息:221005 陈二 男 2004-1-10 80 92 85
请输入第6个学生的信息:221006 赵六 女 2005-6-18 88 85 98
学生基本信息表:
学号 姓名 性别 出生日期 成绩1成绩2成绩3总成绩
221001 张三 男 2004-3-15 85 95 85 265
221002 李四 女 2005-12-10 90 80 95 265
221003 王五 男 2004-4-12 75 80 80 235
221004 刘一 男 2003-12-5 82 88 86 256
221005 陈二 男 2004-1-10 80 92 85 257
221006 赵六 女 2005-6-18 88 85 98 271
总成绩:1449
倒序学生基本信息表:
学号 姓名 性别 出生日期 成绩1成绩2成绩3总成绩
221006 赵六 女 2005-6-18 88 85 98 271
221005 陈二 男 2004-1-10 80 92 85 257
221004 刘一 男 2003-12-5 82 88 86 256
221003 王五 男 2004-4-12 75 80 80 235
221002 李四 女 2005-12-10 90 80 95 265
221001 张三 男 2004-3-15 85 95 85 265
```
阅读全文