C语言编写一个程序,可以储存学生的各项基本信息包括学号,姓名,性别,年龄,年级以及三门功课计算机,英语,数学的成绩,然后按照计算机的成绩从高到低进行排序并输出各学生的所以信息
时间: 2023-10-21 15:03:33 浏览: 119
好的,以下是一个简单的C语言程序实现您所需的功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最大学生数
struct Student {
char id[20]; // 学号
char name[20]; // 姓名
char gender[10]; // 性别
int age; // 年龄
int grade; // 年级
int computer; // 计算机成绩
int english; // 英语成绩
int math; // 数学成绩
};
void swap(struct Student *a, struct Student *b) {
struct Student temp = *a;
*a = *b;
*b = temp;
}
void sort_by_computer(struct Student *students, int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (students[j].computer < students[j+1].computer) {
swap(&students[j], &students[j+1]);
}
}
}
}
void print_student(struct Student s) {
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n", s.id, s.name, s.gender, s.age, s.grade, s.computer, s.english, s.math);
}
int main() {
struct Student students[MAX_STUDENTS];
int n, i;
printf("请输入学生数(最多%d个):", MAX_STUDENTS);
scanf("%d", &n);
printf("请按照以下格式输入学生信息:\n学号\t姓名\t性别\t年龄\t年级\t计算机成绩\t英语成绩\t数学成绩\n");
for (i = 0; i < n; i++) {
scanf("%s%s%s%d%d%d%d%d", students[i].id, students[i].name, students[i].gender, &students[i].age, &students[i].grade, &students[i].computer, &students[i].english, &students[i].math);
}
sort_by_computer(students, n);
printf("学号\t姓名\t性别\t年龄\t年级\t计算机成绩\t英语成绩\t数学成绩\n");
for (i = 0; i < n; i++) {
print_student(students[i]);
}
return 0;
}
```
程序中定义了一个 `Student` 结构体,用来储存每个学生的信息。首先通过 `scanf()` 函数输入学生的各项基本信息,然后调用 `sort_by_computer()` 函数按照计算机成绩从高到低进行排序,最后通过 `print_student()` 函数输出每个学生的所有信息。
希望这个程序能够满足您的需求。
阅读全文