用C语言编写程序给定N个学生的基本信息,每个学生基本信息包括学号(由10个数字组成的字符串)、姓名(长度小于10的不包合空白字符的非空字符串)和2门课程的成绩 [10,100]区间内的整数),按照总分从高到低进行排序,并将排序后的结果写入文件test.txt

时间: 2023-12-08 20:10:44 浏览: 51
好的,以下是一个示例程序,你可以参考它进行修改。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 1000 #define MAX_NAME_LEN 10 #define MAX_ID_LEN 11 typedef struct { char id[MAX_ID_LEN]; char name[MAX_NAME_LEN]; int score1; int score2; int total_score; } Student; int cmp(const void* a, const void* b) { const Student* s1 = *(const Student**)a; const Student* s2 = *(const Student**)b; return s2->total_score - s1->total_score; } int main() { Student students[MAX_STUDENTS]; Student* student_ptrs[MAX_STUDENTS]; int n = 0; // 读取学生信息 while (scanf("%s %s %d %d", students[n].id, students[n].name, &students[n].score1, &students[n].score2) == 4) { students[n].total_score = students[n].score1 + students[n].score2; student_ptrs[n] = &students[n]; n++; } // 排序 qsort(student_ptrs, n, sizeof(Student*), cmp); // 写入文件 FILE* fp = fopen("test.txt", "w"); for (int i = 0; i < n; i++) { fprintf(fp, "%s %s %d\n", student_ptrs[i]->id, student_ptrs[i]->name, student_ptrs[i]->total_score); } fclose(fp); return 0; } ``` 在这个程序中,我们定义了一个`Student`结构体,用于存储学生信息。我们使用数组`students`存储学生信息,使用`student_ptrs`数组存储指向每个学生的指针,方便排序。`cmp`函数用于定义排序规则,这里按照总分从高到低排序。 读取学生信息后,我们将每个学生的指针存储到`student_ptrs`数组中,并对这个数组进行排序。最后,我们将排序结果写入`test.txt`文件中。 注意在实际使用时,你需要根据自己的数据格式进行修改。同时,如果数据量很大,你可能需要使用外部排序等技术来处理。

相关推荐

最新推荐

recommend-type

HP-Socket编译-Linux

HP-Socket编译-Linux
recommend-type

JavaScript_生活在Discord上的开源社区列表.zip

JavaScript
recommend-type

JavaScript_MultiOn API.zip

JavaScript
recommend-type

JavaScript_简单和完整的React DOM测试工具,鼓励良好的测试实践.zip

JavaScript
recommend-type

JavaScript_成为一个Nodejs开发者.zip

JavaScript
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。