c语言编写程序题目描述 某班开设有英语、数学、程序设计三门课程,该班同学信息保存在文本文件student.txt中,编写程序从文件读入该班同学信息,分别按总成绩和英语成绩排序。该班同学不多于50人。 输入描述 文本文件student.txt,每行数据描述一个同学信息,包括名字、英语、数学、程序设计成绩 输出描述 该班同学总成绩排序和英语成绩排序,成绩相同时按输入次序。 每项占12位。 样例输入 文本文件student.txt,内容格式如下 张三 80 90 88 李四 66 80 90 王五 50 78 87 Jack 68 86 70 Tom 60 88 96 样例输出 Name English Math C Total 张三 80 90 88 258 Tom 60 88 96 244 李四 66 80 90 236 Jack 68 86 70 224 王五 50 78 87 215 Name English Math C Total 张三 80 90 88 258 Jack 68 86 70 224 李四 66 80 90 236 Tom 60 88 96 244 王五 50 78 87 215
时间: 2024-02-10 16:04:26 浏览: 109
c语言程序宝典 C 语言是1972年由美国的Dennis Ritchie设计发明的, 并首次在UNIX操作系统
以下是一份可能的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, math, c, total;
};
void print_header() {
printf("%-12s%-12s%-12s%-12s%-12s\n", "Name", "English", "Math", "C", "Total");
}
void print_student(struct student s) {
printf("%-12s%-12d%-12d%-12d%-12d\n", s.name, s.english, s.math, s.c, s.total);
}
void sort_by_total(struct student students[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[j].total > students[i].total
|| (students[j].total == students[i].total && j < i)) {
struct student tmp = students[i];
students[i] = students[j];
students[j] = tmp;
}
}
}
}
void sort_by_english(struct student students[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[j].english > students[i].english
|| (students[j].english == students[i].english && j < i)) {
struct student tmp = students[i];
students[i] = students[j];
students[j] = tmp;
}
}
}
}
int main() {
FILE *fp;
char filename[] = "student.txt";
struct student students[MAX_STUDENTS];
int n = 0;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return -1;
}
while (fscanf(fp, "%s%d%d%d", students[n].name, &students[n].english,
&students[n].math, &students[n].c) == 4) {
students[n].total = students[n].english + students[n].math + students[n].c;
n++;
if (n >= MAX_STUDENTS) {
printf("Too many students in file %s\n", filename);
break;
}
}
fclose(fp);
printf("Total Score Ranking:\n");
print_header();
sort_by_total(students, n);
int i;
for (i = 0; i < n; i++) {
print_student(students[i]);
}
printf("\nEnglish Score Ranking:\n");
print_header();
sort_by_english(students, n);
for (i = 0; i < n; i++) {
print_student(students[i]);
}
return 0;
}
```
该程序首先定义了一个 `student` 结构体来存储每个同学的信息,包括姓名、英语成绩、数学成绩、程序设计成绩和总成绩。然后定义了三个函数,分别用于打印表头、打印一个同学的信息和按总成绩排序。排序函数使用简单的选择排序算法,从高到低排序,如果总成绩相同,则按照输入顺序排序。另外,还定义了一个按英语成绩排序的函数。最后,程序读入文本文件、计算总成绩、排序并输出结果。注意,文件名和路径需要根据实际情况修改。
阅读全文