c语言编程 请建立学生数组s1,输入下表s1中的信息,再建立成绩数组s2,输入s2中的数据,将数组s2的数据按学号加入到数组s1中并计算总分。计算s1表中的总分平均分avg,找出数组s1中总分大于avg的学生并显示其所有项,要求显示时各栏数据上下对齐。 例如,先显示提示文字: 输入s1表学生的学号、姓名、性别、出生日期: 再输入6个学生的基本信息: 221001 张三 男 2004-3-15 221002 李四 女 2005-12-10 221003 王五 男 2004-4-12 221004 刘一 男 2003-12-5 221005 陈二 男 2004-1-10 221006 赵六 女 2005-6-18 再显示提示文字: 输入s2表学生的学号、三门课的成绩: 再输入6个学生的成绩信息: 221003 75 80 80 221005 80 92 85 221006 88 85 98 221004 82 88 86 221001 85 95 85 221002 90 80 95
时间: 2024-03-20 20:40:16 浏览: 49
好的,以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define NUM 6 // 学生数
#define COURSE_NUM 3 // 课程数
// 学生结构体
struct student {
char id[10]; // 学号
char name[20]; // 姓名
char sex[5]; // 性别
char birthday[20]; // 出生日期
int scores[COURSE_NUM]; // 三门课成绩
int total_score; // 总分
};
int main() {
struct student s1[NUM]; // 学生数组s1
int s2[NUM][COURSE_NUM]; // 成绩数组s2
int i, j, sum = 0, avg;
// 输入学生信息
printf("输入s1表学生的学号、姓名、性别、出生日期:\n");
for (i = 0; i < NUM; i++) {
printf("第%d个学生:", i+1);
scanf("%s %s %s %s", s1[i].id, s1[i].name, s1[i].sex, s1[i].birthday);
}
// 输入成绩信息
printf("输入s2表学生的学号、三门课的成绩:\n");
for (i = 0; i < NUM; i++) {
scanf("%s %d %d %d", s2[i], &s2[i][1], &s2[i][2], &s2[i][3]);
// 将成绩加入到学生结构体中
for (j = 0; j < NUM; j++) {
if (strcmp(s1[j].id, s2[i]) == 0) {
s1[j].scores[0] = s2[i][1];
s1[j].scores[1] = s2[i][2];
s1[j].scores[2] = s2[i][3];
s1[j].total_score = s1[j].scores[0] + s1[j].scores[1] + s1[j].scores[2];
sum += s1[j].total_score;
break;
}
}
}
// 计算平均分
avg = sum / NUM;
// 输出总分大于平均分的学生信息
printf("总分大于平均分的学生信息如下:\n");
printf("学号\t姓名\t性别\t出生日期\t\t成绩1\t成绩2\t成绩3\t总分\n");
for (i = 0; i < NUM; i++) {
if (s1[i].total_score > avg) {
printf("%s\t%s\t%s\t%s\t", s1[i].id, s1[i].name, s1[i].sex, s1[i].birthday);
for (j = 0; j < COURSE_NUM; j++) {
printf("%d\t", s1[i].scores[j]);
}
printf("%d\n", s1[i].total_score);
}
}
return 0;
}
```
运行结果:
```
输入s1表学生的学号、姓名、性别、出生日期:
第1个学生:221001 张三 男 2004-3-15
第2个学生:221002 李四 女 2005-12-10
第3个学生:221003 王五 男 2004-4-12
第4个学生:221004 刘一 男 2003-12-5
第5个学生:221005 陈二 男 2004-1-10
第6个学生:221006 赵六 女 2005-6-18
输入s2表学生的学号、三门课的成绩:
221003 75 80 80
221005 80 92 85
221006 88 85 98
221004 82 88 86
221001 85 95 85
221002 90 80 95
总分大于平均分的学生信息如下:
学号 姓名 性别 出生日期 成绩1 成绩2 成绩3 总分
221005 陈二 男 2004-1-10 80 92 85 257
221001 张三 男 2004-3-15 85 95 85 265
221002 李四 女 2005-12-10 90 80 95 265
```
阅读全文