/* 8.8从文件ex88_1.txt中取出成绩,排序后,按降序存放EX88_2.TXT中 */
#include "stdio.h"
#define N 10
struct student
{
  int num;
  char name[20];
  int score[3];  /*不能使用float*/
  float average;
};

void sort(struct student stu[]);
void print(FILE *fp, struct student stu[]);
void printtopfive(FILE *fp, struct student stu[]);

void main()
{
   struct student s[N];
   int i;
   FILE *fp1,*fp2;
    char ch;
    if((fp1=fopen("c:\\ex88_1.txt","r"))==NULL)
      {
       printf("不能打开文件c:\\ex88_1.txt");
       exit(1);
      }
    if((fp2=fopen("c:\\ex88_2.txt","w"))==NULL)
      {
       printf("不能打开文件c:\\ex88_2.txt");
       exit(1);
      }

for(i=0;i<N;i++)
   {
      fscanf(fp1,"%d%s%d%d%d",&s[i].num,s[i].name,&s[i].score[0],
                        &s[i].score[1],&s[i].score[2]);
      s[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;
   }
   fprintf(fp2,"原始成绩报表\n");
   print(fp2,s);
   sort(s);
   fprintf(fp2,"排序之后的成绩报表\n");
   print(fp2,s);
   fprintf(fp2,"前五名成绩报表\n");
   printtopfive(fp2,s);
}

void sort(struct student stu[])
{
  int i,k,j;
  struct student t;
  for(i=0;i<N-1;i++)
  {
    k=i;
    for(j=i+1;j<N;j++)
    {
      if(stu[k].average<stu[j].average)
         k=j;
      if(k!=i)
      {
       t=stu[i];
       stu[i]=stu[k];
       stu[k]=t;
      }
    }

}
}

void print(FILE *fp, struct student stu[])
{
 int i;
 fprintf(fp,"StudentID StudentName   Score1  Score2  Score3  Average\n");
 for(i=0;i<N;i++)
   fprintf(fp,"%-10d%-12s%8d%8d%8d%8.1f\n",stu[i].num,stu[i].name,
   stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average);
}

void printtopfive(FILE *fp, struct student stu[])
{
 int i;
 fprintf(fp,"StudentName   Average\n");
 for(i=0;i<5;i++)
   fprintf(fp,"%-12s%8.1f\n",stu[i].name,stu[i].average);
}

/*ex88_1.txt中取出成绩?

20001    姓名(1)    70    80    90
20002    姓名(2)    71    81    91
20003    姓名(3)    72    82    92
20004    姓名(4)    73    83    93
20005    姓名(5)    74    84    94
20006    姓名(6)    75    85    95
20007    姓名(7)    76    86    96
20008    姓名(8)    77    87    97
20009    姓名(9)    78    88    98
20010    姓名(10)    79    89    99
*/

/*排序后,按降序存放EX88_2.TXT中

原始成绩报表
StudentID StudentName   Score1  Score2  Score3  Average
20001     姓名(1)         70      80      90    80.0
20002     姓名(2)         71      81      91    81.0
20003     姓名(3)         72      82      92    82.0
20004     姓名(4)         73      83      93    83.0
20005     姓名(5)         74      84      94    84.0
20006     姓名(6)         75      85      95    85.0
20007     姓名(7)         76      86      96    86.0
20008     姓名(8)         77      87      97    87.0
20009     姓名(9)         78      88      98    88.0
20010     姓名(10)        79      89      99    89.0
排序之后的成绩报表
StudentID StudentName   Score1  Score2  Score3  Average
20010     姓名(10)        79      89      99    89.0
20009     姓名(9)         78      88      98    88.0
20008     姓名(8)         77      87      97    87.0
20007     姓名(7)         76      86      96    86.0
20006     姓名(6)         75      85      95    85.0
20005     姓名(5)         74      84      94    84.0

*/

转载于:https://www.cnblogs.com/emanlee/archive/2008/05/18/1202092.html

C语言程序设计 练习题参考答案 第八章 文件(2)相关推荐

  1. C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参

    /*  7.16 实现测试字符串长度函数strlen() */ #include "stdio.h" int strlen(char *p); void main() {     ...

  2. C语言程序设计习题参考答案

    C语言QQ群:108168489 此群是普通群,限100人.无法容纳所有C语言同学,敬请谅解. 申请加入务必注明[班级和姓名](不注明班级和姓名,拒绝加入),加入群后修改群名片.课程结束后[取消该群] ...

  3. 合肥工业大学c语言是试卷,合肥工业大学2005-2007年C语言程序设计试卷参考答案.doc-资源下载人人文库网...

    合肥工业大学2005-2007年<C语言程序设计>试卷参考答案.doc 合肥工业大学2005年C语言程序设计试卷参考答案一. 填空题(分,每空1分)1main( ) 或主函数 21 7 3 ...

  4. 最初编写的c语言程序称为,C语言程序设计复习参考答案

    <C语言程序设计复习参考答案>由会员分享,可在线阅读,更多相关<C语言程序设计复习参考答案(46页珍藏版)>请在人人文库网上搜索. 1.随堂练习12]1. 下面哪些标识符属于合 ...

  5. c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)

    <C语言程序设计练习题(含程序及参考答案)>由会员分享,可在线阅读,更多相关<C语言程序设计练习题(含程序及参考答案)(47页珍藏版)>请在人人文库网上搜索. 1.1.定义一个 ...

  6. c语言程序设计教程韩立毛答案,c语言程序设计教程201X韩立毛徐秀芳书后练习题参考答案...

    c语言程序设计教程201X韩立毛徐秀芳书后练习题参考答案 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  7. c语言高中题目及答案,高中信息技术 C语言程序设计练习题 选修1

    专心 爱心 用心1 C C 语言程序设计语言程序设计 练习题练习题 一 单项一 单项选择题选择题 单项选择题要求从给出的四个备选答案中 选出一个最符合题意的答案 本类习题主要检 查对 C 语言基本概念 ...

  8. c语言只用a求正方形面积,C语言程序设计练习题(答案).docx

    C语言程序设计练习题(答案)C语言程序设计练习题(答案) 上机实训项目实验1实验步骤1.进入VC环境 从"开始"→"程序"→"Microsoft Vi ...

  9. 2017年9月计算机二级c语言,2017年9月计算机二级C语言程序设计练习题

    2017年9月计算机二级C语言程序设计练习题 2017年计算机二级考试即将在九月份进行,你准备好了吗?下面是小编为大家带来的计算机二级C语言程序设计练习题,欢迎阅读. 练习题一: 阅读程序题 1.in ...

最新文章

  1. 用可组合的构建块丰富用户界面?谷歌提出「可解释性」的最新诠释
  2. 熟悉 Linux 系统结构,推开Linux 大门
  3. [部署]VM11下CentOS7mini安装及配置
  4. html js什么作用,html錨點的作用和js選項卡錨點跳轉的使用
  5. HihoCode1721删除一个字符之后是回文字符串
  6. java web 嵌套播放器_请教一下tableau如何嵌套进自己开发的javaweb 项目中,谢谢了...
  7. .NET6之MiniAPI(十八):OpenAPI swagger
  8. 牛客题霸 [删除链表的倒数第n个节点] C++题解/答案
  9. 【PL/SQL】匿名块、存储过程、函数、触发器
  10. linux如何切换到root用户
  11. VS通过opencv显示图片和打开相机的显示生成dll用unity调用
  12. 【图像处理】基于matlab GUI图像滤镜(马赛克+蓝色透镜+素描)【含Matlab源码 1145期】
  13. HTML对网页的加密和解密方法大全
  14. html5选择时间,科技常识:HTML5新控件之日期和时间选择输入的实现代码
  15. Privates下载
  16. 我们为什么用GO语言来做区块链?
  17. win7锁定计算机自动关机,windows7怎么设置电脑自动关机_win7如何自动关机
  18. aso标题关键词可以重复吗
  19. div上绑定keyDown事件
  20. ubuntu18.04部署syslog服务器

热门文章

  1. 2 中间件的使用、异步action的创建
  2. ES6-17 class与对象
  3. JAVA_出神入化学习路线大纲
  4. 最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
  5. 深圳本地网店代运营公司
  6. ES6之const命令
  7. Nuget发布Dll
  8. 使用NPOI和委托做EXCEL导出
  9. HTML基础(格式标签)
  10. 花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。...