帮我把正确的代码完整的写一遍

时间: 2023-08-28 18:19:54 浏览: 53
好的,以下是修改后的完整代码: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 20 #define MAX_COURSE_NUM 10 #define MAX_STUDENT_NUM 100 typedef struct { long num; char name[MAX_NAME_LEN]; int score[MAX_COURSE_NUM]; int total; int rank; } STUDENT; void ReadFromFile() { FILE *fin; int i, j, NumOfStudent, NumOfCourse; fin = fopen("F:/学生管理/input.txt", "r"); if (fin == NULL) { printf("Failed to open a file!\n"); exit(0); } fscanf(fin, "%d%d", &NumOfStudent, &NumOfCourse); STUDENT *stu = (STUDENT*) calloc(NumOfStudent, sizeof(STUDENT)); int *Total = (int*) calloc(NumOfStudent, sizeof(int)); char buf[1024]; for (i = 0; i < NumOfStudent; i++) { fscanf(fin, "%ld", &stu[i].num); fgets(buf, 1024, fin); sscanf(buf, "%s", stu[i].name); for (j = 0; j < NumOfCourse; j++) { fscanf(fin, "%d", &stu[i].score[j]); Total[i] += stu[i].score[j]; } stu[i].total = Total[i]; } fclose(fin); int k; for (i = 0; i < NumOfStudent; i++) { k = i; for (j = i + 1; j < NumOfStudent; j++) { if (Total[j] > Total[k]) { k = j; } } if (k != i) { int tmp = Total[i]; Total[i] = Total[k]; Total[k] = tmp; STUDENT tmp_stu = stu[i]; stu[i] = stu[k]; stu[k] = tmp_stu; } } for (i = 0; i < NumOfStudent; i++) { if (i == 0 || Total[i] != Total[i - 1]) { stu[i].rank = i + 1; } else { stu[i].rank = stu[i - 1].rank; } } printf("学号\t姓名"); for (i = 1; i <= NumOfCourse; i++) { printf("\t课程%d", i); } printf("\t总分\t排名\n"); for (i = 0; i < NumOfStudent; i++) { printf("%ld\t%s", stu[i].num, stu[i].name); for (j = 0; j < NumOfCourse; j++) { printf("\t%d", stu[i].score[j]); } printf("\t%d\t%d\n", stu[i].total, stu[i].rank); } free(stu); free(Total); } int main() { ReadFromFile(); return 0; } ``` 这个代码在读取学生姓名的时候使用了 fgets 函数,并在读取后去掉了换行符;在排序后设置学生排名的时候使用了 if/else 语句来处理并列排名的情况。同时,还添加了一些宏定义来规范代码,使其更易读。

相关推荐

最新推荐

recommend-type

C语言统计一篇英文短文中单词的个数实例代码

本文通过实例代码给大家介绍的C语言统计一篇英文短文中单词的个数,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
recommend-type

javascript中直接写php代码的方法

一、在javascript中嵌入php代码javascript若是通过js文件包含进来的,那么js文件中也可以直接写php代码,只不过包含js文件是扩展名要改成php,如: 代码如下:[removed][removed]二、javascript函数参数的默认值c语言...
recommend-type

c语言文件操作常用函数及读写文件代码举列

文章主要例举一个c语言文件操作常用函数及读写文件的代码,感性趣的朋友可以看看。
recommend-type

Java8中使用一行代码读取文件

主要介绍了Java8中使用一行代码读取文件,要注意,本文介绍的方法不适合读取很大的文件,因为可能存在内存空间不足的问题,需要的朋友可以参考下
recommend-type

java通过JFrame做一个登录系统的界面完整代码示例

主要介绍了java通过JFrame做一个登录系统的界面完整代码示例,具有一定借鉴价值,需要的朋友可以参考下。
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

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

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