【题目描述】:
学生信息包括:学号,姓名,语文、数学、英语成绩,
从键盘输入15个学生信息,
将之按照总分排序最高的前5个学生信息保存到sum_max.txt中,
将均分最低的排序前10个学生信息保存在avg_min.txt中。

分析:
先输入数据信息,然后进行排序
总分最高的均分也最高;
均分最低的总分也是最低的那几位

#define  _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
#include<stdlib.h>#define N 15
#define A 5
#define B 10
#define LEN sizeof(struct Student)/*学生信息包括:学号,姓名,语文、数学、英语成绩,从键盘输入15个学生信息,将之按照总分排序最高的前5个学生信息保存到sum_max.txt中,将均分最低的排序前10个学生信息保存在avg_min.txt中。
*/struct Student
{int num;char name[20];float Chinese;float Math;float English;float sumScore;
};FILE* fpMax, * fpMin;     //定义文件指针的一个全局变量//函数声明部分
void  dataInput(struct Student stu[], int n);
void dataPrint(struct Student stu[], int n);
struct Student* sortSumScore(struct Student* stu, int n);int main()
{//struct Student stuDat[N];struct Student stuData[N] = {{1006,"Tao",98,89,96},{1012,"Bobe",55,66,77},{1038,"Cracy",51,30,50},{1030,"Duby",61,84,52},{1008,"puth",100,100,100},{1019,"Cacia",88,66,33},{1007,"Charlie",100,99,100},{1001,"sely",66,78,53},{1022,"Buff",56,88,33},{1003,"Fila",86,75,93},{1005,"Cherry",98,95,93},{1020,"Marry",68,75,83},{1010,"Dave",98,99,97},{1011,"David",68,79,91},{1025,"Melon",90,89,90}};int i, j;char s1[100] = { "学号\t姓名\t语文\t数学\t英语\n" };char s2[100] = { "--------------------------------------------------\n" };//dataInput(stuData, N);sortSumScore(stuData, N);printf("\n------------------排序后的数据如下--------------------\n\n");dataPrint(stuData, N);printf("\n");fpMax = fopen("sum_max.txt", "w");if (fpMax == NULL){printf("文件写入错误!\n");exit(0);}else{printf("本地文件保存成功.\n");}fprintf(fpMax, "%s", s1);fprintf(fpMax, "%s", s2);for (i = 0; i < A; i++){//将变量数据写入文件fprintf(fpMax, "%d\t%s\t%.2f\t%.2f\t%.2f\n",stuData[i].num, stuData[i].name, stuData[i].Chinese, stuData[i].Math, stuData[i].English);fprintf(fpMax, "%s", s2);}fclose(fpMax);fpMin = fopen("avg_min.txt", "w");if (fpMin == NULL){printf("文件写入错误!\n");exit(0);}fprintf(fpMin, "%s", s1);fprintf(fpMin, "%s", s2);for (j = N - 1; j >= N - B; j--){//将变量数据写入文件fprintf(fpMin, "%d\t%s\t%.2f\t%.2f\t%.2f\n",stuData[j].num, stuData[j].name, stuData[j].Chinese, stuData[j].Math, stuData[j].English);fprintf(fpMin, "%s", s2);}fclose(fpMin);}//数据录入
void  dataInput(struct Student stu[], int n)
{int i;printf("总计需要录入 %d 个学生的信息。\n", n);for (i = 0; i < n; i++){printf("\n请输入NO . %d 学生信息:\n", i + 1);printf("学号-->");scanf("%d", &stu[i].num);printf("姓名-->");scanf("%s", stu[i].name);printf("语文-->");scanf("%f", &stu[i].Chinese);printf("数学-->");scanf("%f", &stu[i].Math);printf("英语-->");scanf("%f", &stu[i].English);//stu[i].sumScore = stu[i].Chinese + stu[i].Math + stu[i].English;printf("\n");}
}//总分排序
struct Student* sortSumScore(struct Student* stu, int n)
{int i, j;struct Student temp;for (i = 0; i < n; i++){stu[i].sumScore = stu[i].Chinese + stu[i].Math + stu[i].English;}for (i = 0; i < n - 1; i++){for (j = 0; j < n - 1 - i; j++){if (stu[j].sumScore < stu[j + 1].sumScore){temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;}}}return stu;
}//定义信息输出函数
void dataPrint(struct Student stu[], int n)
{int i;for (i = 0; i < n; i++){printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].num, stu[i].name, stu[i].Chinese, stu[i].Math, stu[i].English);printf("------------------------------------------------\n");}
}


流程图如下:

子函数部分:




将学生信息按照总分排名然后分别保存较高的几位和较低的几位学生信息到两个不同的文件相关推荐

  1. python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt

    1.有一个学生成绩表,包括学号.姓名.高数.英语,计算机. 录入若干个学生学号.姓名.高数.英语,计算机5项数据. 将学生成绩表数据写入文件,文件名为"学生成绩表.txt import cs ...

  2. 成绩分析系统c语言,学生成绩分析及排名系统C语言程序设计课程设计实习报告...

    学生成绩分析及排名系统C语言程序设计课程设计实习报告 长江大学计算机上机实习报告题目学生成绩分析及排名系统姓名学院__专业班级学号指导教师20120222目录一设计目的1二课程设计摘要2三课程设计的任 ...

  3. Java——集合(输入5个学生的信息按总分高低排序)

    题目要求: 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台 分析: 1,定义一个学生类 * 成员变量:姓名,语文成绩,数学成绩,英语成绩 * 成员方法:空参构 ...

  4. c语言输入的成绩由高到低该怎么,c语言编程:输入学生信息(姓名年龄分数)并按照分数由高到低输出...

    <c语言编程:输入学生信息(姓名年龄分数)并按照分数由高到低输出>由会员分享,可在线阅读,更多相关<c语言编程:输入学生信息(姓名年龄分数)并按照分数由高到低输出(2页珍藏版)> ...

  5. 电子信息计算机专业院校排名,2021电子信息类专业大学全国排名

    2021电子信息类专业大学全国排名2021-06-10 11:33:28文/叶丹 中国电子信息类专业最好的大学有哪几所,中国哪些本科大学电子信息门类专业实力最强?下面是全国最好的电子信息类专业大学排名 ...

  6. 云大计算机初试最高分,2018年云南大学考研初试成绩及总分排名查询通知

    各位考生: 云南省2018年硕士研究生入学考试成绩已公布,报考我校的考生可以登录云南省招考频道(http://www.ynzs.cn/)."云南省招考频道官方微信公众号".&quo ...

  7. 北京信息科学技大学计算机排名,北京信息科技大学专业排名及介绍 哪些专业最好...

    北京信息科技大学专业排名及介绍 哪些专业最好2017-11-17 16:18:29文/李男 在选择专业时,北京信息科技大学有哪些专业?哪些专业最好?都是学生们十分关心的问题,下面小编整理了北京信息科技 ...

  8. excel计算班级总分排名_在Excel中计算排名

    excel计算班级总分排名 To do some research on sorting, I hauled one of the big, dusty Excel books off my shel ...

  9. mysql 根据总分排名

    mysql 根据总分排名 SELECTt.*,@rank := @rank + 1 AS rank FROM( SELECT @rank := 0 ) r,( SELECTtas.id,tas.tea ...

最新文章

  1. EF使用Fluent API配置映射关系
  2. 一道笔试题--求二进制数1的个数
  3. c语言不会可以学好java吗_C语言一定要学好吗?
  4. visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
  5. ❤️六W字《计算机基础知识》(五)(建议收藏)❤️
  6. 自创小插件让emacs支持工程项目
  7. 内存中的栈空间与堆空间
  8. Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
  9. Java通过FFMPEG获取视频时长
  10. Mac上重装pycharm打不开的解决方法
  11. Button或者ImageButton的背景设为透明或者半透明
  12. (Markdown图片居中)CSDN 验证通过
  13. WPF实现半圆形导航菜单
  14. 拍沪牌服务器响应,拍中了四张沪牌,再来聊聊拍牌经验
  15. 快出来:律师免费教你打官司啦!!!
  16. 固态硬盘 每秒1.5G
  17. markdown中插入emoji表情方法总结,让你尽情使用表情符号
  18. VMware虚拟机安装Ubuntu kylin 麒麟系统教程 超详细
  19. Qt(C++)中如何连接sqlite3数据库及如何使用
  20. arm-linux东东之nand之一:nand 初始化

热门文章

  1. [ CTF ]【天格】战队WriteUp-第六届”蓝帽杯“全国大学生网络安全技能大赛(半决赛)
  2. python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......
  3. 女孩做妻子前应知道的十件事
  4. 微服务架构的深入理解-总结的很好
  5. 天田AMADA数控折弯机触摸屏维修RGM21003主机电路板维修
  6. 中外消防传感器差距浅析
  7. 注重实效的程序员之快速参考指南
  8. 交游首款游戏曝光 《张狂交游》打破垂头交际
  9. android 分享小程序到微信,Android 分享微信小程序之图片优化
  10. 旧机还在换盆?! Linux deploy让她再发光!