读取文件内的信息,并排序。

 
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct student{
  4. char number[20];
  5. char name[20];
  6. char sex[10];
  7. char birth[20];
  8. char province[20];
  9. int score;
  10. struct student *next;
  11. }student;
  12. void getSecond(student *s[],int sn);
  13. void sort(student *s[],int sn);
  14. int main(){
  15. FILE *fp;
  16. int f;
  17. int sn=10;
  18. student *s[sn];
  19. //申请内存空间
  20. for(f=0;f<sn;f++){
  21. s[f]=(student*)malloc(sizeof(student));
  22. }
  23. //打开(if)文件
  24. if((fp=fopen("E:\\h.txt","r"))==NULL){
  25. printf("文件读取失败.\n");
  26. return 0;
  27. }
  28. printf("文件读取成功.\n");
  29. //读取(for)文件
  30. for(f=0;f<sn;f++){
  31. fscanf(fp,"%s%s%s%s%s%d",s[f]->number,s[f]->name,s[f]->sex,
  32. s[f]->birth,s[f]->province,&s[f]->score);
  33. printf("%s%16s%8s%16s%16s%8d\n",s[f]->number,s[f]->name,s[f]->sex,
  34. s[f]->birth,s[f]->province,s[f]->score);
  35. }
  36. //关闭文件
  37. fclose(fp);
  38. getSecond(s,sn);
  39. sort(s,sn);
  40. return 0;
  41. }
  42. //寻找次高分数的学生信息
  43. void getSecond(student *s[],int sn){
  44. int ranking=1;
  45. int i,j;
  46. for(i=0;i<sn;i++){
  47. for(j=0;j<sn;j++){
  48. if(s[i]->score>s[j]->score)ranking++;
  49. }
  50. if(ranking==sn)break;
  51. else ranking=1;
  52. }
  53. printf("\n次高分数的学生信息:\n");
  54. printf("%s%16s%8s%16s%16s%8d\n",s[i]->number,s[i]->name,s[i]->sex,
  55. s[i]->birth,s[i]->province,s[i]->score);
  56. }
  57. //排序后学生的信息
  58. void sort(student *s[],int sn){
  59. student *temp;
  60. int i,j;
  61. for(i=0;i<sn-1;i++){
  62. for(j=0;j<sn;j++){
  63. if(s[i]->score<s[j]->score){
  64. temp=s[i];
  65. s[i]=s[j];
  66. s[j]=temp;
  67. }
  68. }
  69. }
  70. printf("\n所有排序后学生的信息 :\n");
  71. for(i=0;i<sn;i++){
  72. printf("%s%16s%8s%16s%16s%8d\n",s[i]->number,s[i]->name,s[i]->sex,
  73. s[i]->birth,s[i]->province,s[i]->score);
  74. }
  75. }


sql

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 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值