编写一个c程序,输入n,然后输入n个学生信息,输出其中所有男同学信息(按年龄从大到小输出,若年龄相同则按学号从小到大))
时间: 2024-06-09 09:06:52 浏览: 38
以下是一个示例 C 语言程序,实现了输入 n 个学生信息,输出所有男同学信息(按年龄从大到小输出,若年龄相同则按学号从小到大)的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_ID_LEN 10
typedef struct {
char name[MAX_NAME_LEN];
char id[MAX_ID_LEN];
int age;
char gender;
} Student;
int main() {
int n;
printf("请输入学生人数: ");
scanf("%d", &n);
Student *students = malloc(sizeof(Student) * n);
printf("请输入每个学生的信息(姓名 学号 年龄 性别):\n");
for (int i = 0; i < n; i++) {
scanf("%s %s %d %c", students[i].name, students[i].id, &students[i].age, &students[i].gender);
}
// 按年龄从大到小排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].age < students[j + 1].age) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("男同学信息(按年龄从大到小输出,若年龄相同则按学号从小到大):\n");
for (int i = 0; i < n; i++) {
if (students[i].gender == 'M') {
printf("%s %s %d %c\n", students[i].name, students[i].id, students[i].age, students[i].gender);
}
}
free(students);
return 0;
}
```
该程序首先读入 n,然后根据 n 动态分配内存空间,存储 n 个学生的信息。接着,按年龄从大到小排序,最后输出所有男同学的信息。
阅读全文