从文件读出学生信息数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。
2012-03-07 14:03
507 查看
从该文件读出学生信息数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。
本文需要注意的是:
1、文件的读写:
打开文件:
fscanf是按照一定的格式输入,本文里面的数据格式为:10903070101 张三丰 男 19851009 河南省 79
3、d:\g.txt文件内容如下:
#include <stdio.h> #include <stdlib.h> typedef struct student { char number[20]; char name[20]; char sex[10]; char birth[20]; char province[20]; int score; struct student *next; }student; void getSecond(student *s[],int sn); void sort(student *s[],int sn); int main() { FILE* fd; int flag = 0; int sn = 10;//读取前面十个学生的信息 student * s[sn]; //申请内存空间 for(;flag<sn;flag++) { s[flag] = (student *) malloc(sizeof(student)); } //打开文件 if((fd = fopen("d:\g.txt","r"))==NULL) { printf("文件读取失败.\n"); return 0; } printf("文件读取成功.\n"); //读取文件 for( flag = 0; flag < sn; flag++) { fscanf(fd,"%s%s%s%s%s%d",s[flag]->number,s[flag]->name,s[flag]->sex, s[flag]->birth,s[flag]->province,&s[flag]->score); printf("%s%16s%8s%16s%16s%8d\n",s[flag]->number,s[flag]->name,s[flag]->sex, s[flag]->birth,s[flag]->province,s[flag]->score); } //关闭文件 fclose(fd); getSecond(s,sn);//输出成绩第二的学生信息 sort(s,sn);//按照分数高低输出所有学生信息 return 0; } void getSecond(student *s[],int sn) { //寻找次高分数的学生信息 int ranking = 1 ; int i,j; for(i = 0; i < sn; i++) { for(j = 0; j<sn; j++) { if(s[i]->score > s[j]->score) ranking++; } if(ranking == sn ) break;//sn-1表示次高分数标志 else ranking = 1; } printf("\n"); printf("%s%16s%8s%16s%16s%8d\n",s[i]->number,s[i]->name,s[i]->sex, s[i]->birth,s[i]->province,s[i]->score); } void sort(student *s[],int sn) { student * temp; int i=0,j=0; for( ;i<sn-1; i++) { for(j = i; j<sn; j++) { if(s[i]->score < s[j]->score) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } } printf("\n"); //输出所有排序后学生的信息 for(i=0;i<sn;i++) { printf("%s%16s%8s%16s%16s%8d\n",s[i]->number,s[i]->name,s[i]->sex, s[i]->birth,s[i]->province,s[i]->score); } }
本文需要注意的是:
1、文件的读写:
打开文件:
if((fd = fopen("d:\g.txt","r"))==NULL) { printf("文件读取失败.\n"); return 0; }2、读取文件:
fscanf是按照一定的格式输入,本文里面的数据格式为:10903070101 张三丰 男 19851009 河南省 79
for( flag = 0; flag < sn; flag++) { fscanf(fd,"%s%s%s%s%s%d",s[flag]->number,s[flag]->name,s[flag]->sex, s[flag]->birth,s[flag]->province,&s[flag]->score); printf("%s%16s%8s%16s%16s%8d\n",s[flag]->number,s[flag]->name,s[flag]->sex, s[flag]->birth,s[flag]->province,s[flag]->score); }
3、d:\g.txt文件内容如下:
10903070101 张三丰 男 19851009 河南省 79 10903070102 郭靖 男 19851009 江苏省 85 10903070103 黄蓉 女 19851009 江苏省 98 10903070104 杨康 男 19851009 河北省 60 10903070105 令狐冲 男 19851009 河北省 88 10903070106 任盈盈 女 19851009 河北省 77 10903070107 洪七公 男 19851009 河南省 64 10903070108 欧阳锋 男 19851009 福建省 67 10903070109 阿紫 女 19851009 广西省 82 10903070110 段誉 男 19851009 云南省 69 10903070111 梅超风 女 19851009 广西省 72 10903070112 穆念慈 女 19851009 陕西省 69 10903070113 霍青桐 女 19851009 四川省 81 10903070114 陈家洛 男 19851009 四川省 73 10903070115 香香公主 女 19851009 西藏自治区 85 10903070116 乔峰 男 19851009 山东省 78 10903070117 虚竹 男 19851009 山东省 85 10903070118 王语嫣 女 19851009 湖北省 83 10903070119 张无忌 男 19851009 湖北省 78 10903070120 张翠山 男 19851009 湖北省 79 10903070121 殷素素 女 19851009 湖南省 65 10903070122 谢逊 男 19851009 四川省 86 10903070123 杨逍 男 19851009 贵州省 71 10903070124 纪晓芙 女 19851009 四川省 65 10903070125 赵敏 女 19851009 辽宁省 64 10903070126 杨过 男 19851009 陕西省 76 10903070127 小龙女 女 19851009 江西省 81 10903070128 胡斐 男 19851009 湖南省 80 10903070129 袁紫衣 女 19851009 广东省 91 10903070130 凤天南 男 19851009 陕西省 76
相关文章推荐
- 从文件读出学生信息数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。
- 设计一个学生类,其中包含学号、姓名、成绩等数据成员,创建学生对象并且倒入到文件file.txt,然后由文件读取到另一个学生对象并输出,试编程实现。
- 1061 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
- 编写一个程序,将存放学生各种信息的文件中的学生信息读出,重新组成一个存放所有学生的前3门成绩的文件
- 输入N个学生的信息(包括:学号,姓名,5科成绩,总分),统计所有学生的总分,存入二进制文件stu_sc.dat中。然后读取该文件,查找总分最高的学生,并输出该生的所有信息。
- 第十六周实验--任务2--学生成绩排序--从已有的文件中读入学生数据并把修改后的数据写入到另一个新创建的文件中
- 编写程序,查询所有学生选修课程的期末成绩和对应等级,如学生未选修任何课程 --则输出提示信息。用case选择结果
- C写的学生成绩管理系统,可是文件读出的时候多输出了一行,请各位高手看看。能不能解决哦。
- //有5名学生保存在结构体数组中,编程查找成绩最高者,输出该学生全部信息。 // //对上述5名学生数组,按成绩从高到低排序,并输出。
- java输入学生信息,按总分成绩由高到低排列,输出到文件中
- 3、写一个程序,定义一个学生结构体,至少要含4个数据项,其中有一项用来保存学生成绩。用此结构体存储班级上的所有学生信息
- 用字典实现学生信息的录入及按成绩排序输出
- (1) 输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中; (2) 将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中
- 假设有10位同学,各有3门课程的成绩。从键盘输入每位同学的学号、姓名和3门课程的成绩,然后把数据保存到磁盘文件,再将磁盘文件中的学生信息读入并显示
- 综合排序 学生信息输入并排序 键盘录入信息 (姓名,语文成绩,数学成绩,英语成绩),按总分高到低输出
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- 输入输出学生信息和成绩 利用结构体
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩,按总分由高到低 将学生的信息进行排列到文件里
- 建立一个对象数组,内放5个学生数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并从输出学号。