c语言编程,键盘输入六个同学的学号姓名性别出生日期语文成绩数学成绩英语成绩,并计算出成绩之和保存到数组a的总分中,输入两个日期d1和d2,找出这两个日期含之间出生的所有学生并一行一个显示其所有信息项
时间: 2024-03-01 10:54:15 浏览: 68
好的,这是一个比较复杂的问题,需要分步进行解答。
首先,我们需要定义一个结构体,用来存储每个学生的信息:
```c
struct student {
int id; // 学号
char name[20]; // 姓名
char gender; // 性别
char birthdate[10]; // 出生日期
int chinese; // 语文成绩
int math; // 数学成绩
int english; // 英语成绩
};
```
然后,我们需要定义一个数组来存储所有学生的信息:
```c
struct student students[6];
```
接下来,我们需要让用户从键盘输入每个学生的信息,并计算出每个学生的总成绩:
```c
int total_score = 0; // 总分
for (int i = 0; i < 6; i++) {
printf("请输入第 %d 个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("性别:");
scanf(" %c", &students[i].gender);
printf("出生日期:");
scanf("%s", students[i].birthdate);
printf("语文成绩:");
scanf("%d", &students[i].chinese);
printf("数学成绩:");
scanf("%d", &students[i].math);
printf("英语成绩:");
scanf("%d", &students[i].english);
// 计算总分
total_score += students[i].chinese + students[i].math + students[i].english;
}
```
接着,我们需要让用户输入两个日期d1和d2:
```c
char d1[10], d2[10];
printf("请输入两个日期(格式为yyyy-mm-dd):\n");
printf("d1:");
scanf("%s", d1);
printf("d2:");
scanf("%s", d2);
```
最后,我们需要找出出生日期在d1和d2之间的所有学生,并打印出他们的信息:
```c
for (int i = 0; i < 6; i++) {
if (strcmp(students[i].birthdate, d1) >= 0 && strcmp(students[i].birthdate, d2) <= 0) {
// 出生日期在d1和d2之间,打印出学生的信息
printf("%d %s %c %s %d %d %d\n", students[i].id, students[i].name, students[i].gender, students[i].birthdate, students[i].chinese, students[i].math, students[i].english);
}
}
```
完整的代码如下:
阅读全文