某班开设有英语、数学、程序设计三门课程,该班同学信息保存在文本文件student.txt中,编写程序从文件读入该班同学信息,分别按总成绩和英语成绩排序。该班同学不多于50人。 输入描述 文本文件student.txt,每行数据描述一个同学信息,包括名字、英语、数学、程序设计成绩 输出描述 该班同学总成绩排序和英语成绩排序,成绩相同时按输入次序。 每项占12位。。C语言
时间: 2024-02-18 12:06:23 浏览: 71
一个用C语言编写的学生信息管理系统,学生数据保存在文本文件中
以下是一个简单的C语言程序,实现从文件读入该班同学信息,并按总成绩和英语成绩排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 50
#define MAX_NAME_LEN 10
struct student {
char name[MAX_NAME_LEN + 1];
int english;
int math;
int programming;
int total;
};
int main() {
struct student students[MAX_STUDENTS];
int num_students = 0;
// 从文件读入学生信息
FILE *fp = fopen("student.txt", "r");
if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}
while (fscanf(fp, "%s %d %d %d", students[num_students].name, &students[num_students].english, &students[num_students].math, &students[num_students].programming) == 4) {
students[num_students].total = students[num_students].english + students[num_students].math + students[num_students].programming;
num_students++;
}
fclose(fp);
// 按总成绩排序
for (int i = 0; i < num_students - 1; i++) {
for (int j = i + 1; j < num_students; j++) {
if (students[i].total < students[j].total) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("%-12s%-12s%-12s%-12s%-12s\n", "Name", "English", "Math", "Programming", "Total");
for (int i = 0; i < num_students; i++) {
printf("%-12s%-12d%-12d%-12d%-12d\n", students[i].name, students[i].english, students[i].math, students[i].programming, students[i].total);
}
// 按英语成绩排序
for (int i = 0; i < num_students - 1; i++) {
for (int j = i + 1; j < num_students; j++) {
if (students[i].english < students[j].english || (students[i].english == students[j].english && i > j)) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("\n%-12s%-12s%-12s%-12s%-12s\n", "Name", "English", "Math", "Programming", "Total");
for (int i = 0; i < num_students; i++) {
printf("%-12s%-12d%-12d%-12d%-12d\n", students[i].name, students[i].english, students[i].math, students[i].programming, students[i].total);
}
return 0;
}
```
该程序首先定义了一个结构体 `student` 表示学生信息,包括姓名、英语、数学、程序设计成绩以及总成绩。然后定义了一个数组 `students` 保存所有学生信息,最多不超过50个。程序从文件读入学生信息,逐个计算总成绩,并存入数组中。然后按总成绩和英语成绩分别进行排序,输出排序结果。注意输出时要使用格式化字符串控制输出宽度,确保每项占12位。
阅读全文