请建立学生数组s1,输入下表s1中的信息,再建立成绩数组s2,输入下表s2中的数据,将数组s2的数据按学号加入到数组s1中并计算总分。计算s1表中的总分平均分avg,找出数组s1中总分大于avg的学生并显示其所有项,要求显示时各栏数据.上下对齐。两个表的信息如下: 例如,先显示提示文字: 输入s1表学生的学号、姓名、性别、出生日期: 再输入6个学生的基本信息: 输入s2表学生的学号、三门课的成绩: 再输入6个学生的成绩信息: 用c语言写
时间: 2024-03-19 21:46:27 浏览: 132
好的,以下是用C语言实现您的需求的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生信息结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
char gender[10]; // 性别
char birth[20]; // 出生日期
int total_score; // 总分
} Student;
// 学生成绩结构体
typedef struct {
char id[20]; // 学号
int score1; // 成绩1
int score2; // 成绩2
int score3; // 成绩3
} Score;
int main() {
// 创建s1表
Student s1[6];
// 输入学生信息
printf("请输入6个学生的基本信息:\n");
for (int i = 0; i < 6; i++) {
printf("学号、姓名、性别、出生日期:");
scanf("%s %s %s %s", s1[i].id, s1[i].name, s1[i].gender, s1[i].birth);
// 初始化总分为0
s1[i].total_score = 0;
}
// 创建s2表
Score s2[6];
// 输入学生成绩信息
printf("请输入6个学生的成绩信息:\n");
for (int i = 0; i < 6; i++) {
printf("学号、三门课的成绩:");
scanf("%s %d %d %d", s2[i].id, &s2[i].score1, &s2[i].score2, &s2[i].score3);
}
// 将s2表的数据按学号加入到s1表中并计算总分
for (int i = 0; i < 6; i++) {
// 查找该学生在s2表中的成绩信息
for (int j = 0; j < 6; j++) {
if (strcmp(s1[i].id, s2[j].id) == 0) {
// 更新该学生在s1表中的总分
s1[i].total_score += s2[j].score1 + s2[j].score2 + s2[j].score3;
}
}
}
// 计算s1表中所有学生的总分平均分
int total_score = 0;
for (int i = 0; i < 6; i++) {
total_score += s1[i].total_score;
}
float avg_score = (float)total_score / 6;
// 找出s1表中总分大于平均分的学生并显示其所有项
printf("总分大于平均分的学生信息如下:\n");
printf("%-10s%-10s%-10s%-15s%-10s\n", "学号", "姓名", "性别", "出生日期", "总分");
for (int i = 0; i < 6; i++) {
if (s1[i].total_score > avg_score) {
printf("%-10s%-10s%-10s%-15s%-10d\n", s1[i].id, s1[i].name, s1[i].gender, s1[i].birth, s1[i].total_score);
}
}
return 0;
}
```
运行示例程序后,按提示输入s1表和s2表的数据,即可得到符合要求的结果。
阅读全文