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 10:04:26 浏览: 23
以下是一份可能的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` 结构体来存储每个同学的信息,包括姓名、英语成绩、数学成绩、程序设计成绩和总成绩。然后定义了三个函数,分别用于打印表头、打印一个同学的信息和按总成绩排序。排序函数使用简单的选择排序算法,从高到低排序,如果总成绩相同,则按照输入顺序排序。另外,还定义了一个按英语成绩排序的函数。最后,程序读入文本文件、计算总成绩、排序并输出结果。注意,文件名和路径需要根据实际情况修改。

相关推荐

最新推荐

recommend-type

C语言程序设计实现区号查询系统C语言程序设计实现

用C语言编程的区号查询系统,要求实现区号查询系统中,添加新记录、删除记录、显示记录信息、按城市查找信息和退出系统等功能。 ①录入有关城市的名称和区号。 ②显示所有城市的信息。 ③通过输入城市名称查找对应...
recommend-type

C语言程序设计实现学生成绩记录簿

通过编写c语言《学生成绩记录簿系统...3)C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。
recommend-type

C语言程序设计+研究生复试+求职+面试题

汇总了计算机研究生复试有关C语言程序设计各章节简答题,使用了易于口头表达的语言进行了总结。包括C语言程序设计基本概念及各章节问题回答。可供研究生复试或相关专业岗位面试使用。如: 简述C语⾔采取了哪些措施提...
recommend-type

用C语言实现从文本文件中读取数据后进行排序的功能

是一个十分可靠的程序,这个程序的查错能力非常强悍。程序包含了文件操作,归并排序和字符串输入等多种技术。对大家学习C语言很有帮助,有需要的一起来看看。
recommend-type

C语言实现班档案管理系统课程设计

主要为大家详细介绍了C语言实现班档案管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!