2972: C语言习题5.24--文件操作1

时间限制: 1 Sec  内存限制: 128 MB

提交: 248  解决: 94

题目描述

文本文件score.dic 中存储了n名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示:

145811  fuxin 100

145811  chengxian 90

145812  zhangxue 92

145812  lijun 88

……

文件中存储的学生信息按照班级编号升序排列,每个班级的人数可以不同,要求读取文件中所有学生的成绩,计算每个班级的平均成绩,将班级编号和平均成绩输出。

主程序已给出,请根据提示补充缺失代码并提交该部分。

#include <stdio.h>

#include <stdlib.h>

int main()

{

    int num=0;          /* 班级人数计数 */

    int sumScore=0;     /* 累计成绩*/

    int curClass;       /* 当前班级 */

    int curScore;       /* 当前成绩 */

    int lastClass;      /* 上一个班级*/

    int readItems;      /* 正确读入数据数目 */

    FILE *fin;          /* 输入文件 */

    fin=fopen("score.dic","r");     /* 打开输入文件读 */

    if(!fin) /* 文件打开失败 */

    {

        fprintf(stderr,"error open file!\n");   /* 输出错误信息到标准错误设备 */

        exit(-1);   /* 强制退出,并返回错误码 */

    }

/****************/

    /* 读入班级和成绩 */

    /* 读入数据合法*/

    /* 处理连续的相同班级数据*/

    /* 班级人数累计 */

    /* 班级成绩累计 */

    /* 读入下一个班级和成绩 */

    /*  输出平均成绩 */

    /* 数据清零   */

    /* 关闭输入文件*/

/*****************/

    return 0;

}

输入

n名学生的信息(班级编号,姓名,成绩)(文件读入)

输出

每个班级的班级编号和平均成绩

样例输入

样例输出

  1. 145811 95145812 90

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int num=0; /* 班级人数计数 */
  6. int sumScore=0; /* 累计成绩*/
  7. int curClass; /* 当前班级 */
  8. int curScore; /* 当前成绩 */
  9. int lastClass; /* 上一个班级*/
  10. int readItems; /* 正确读入数据数目 */
  11. FILE *fin; /* 输入文件 */
  12. fin=fopen("score.dic","r"); /* 打开输入文件读 */
  13. if(!fin) /* 文件打开失败 */
  14. {
  15. fprintf(stderr,"error open file!\n"); /* 输出错误信息到标准错误设备 */
  16. exit(-1); /* 强制退出,并返回错误码 */
  17. }
  18. while(readItems=fscanf(fin,"%d %*s %d",&curClass,&curScore))
  19. {
  20. if(readItems!=2)
  21. {
  22. break;
  23. }
  24. if((curClass==lastClass||num==0))
  25. {
  26. num++;
  27. sumScore+=curScore;
  28. lastClass=curClass;
  29. }
  30. else
  31. {
  32. printf("%d\t%d\n",lastClass,sumScore/num);
  33. num=1;
  34. sumScore=curScore;
  35. lastClass=curClass;
  36. }
  37. }
  38. printf("%d\t%d\n",lastClass,sumScore/num);
  39. num=0;
  40. sumScore=0;
  41. curClass=0;
  42. curScore=0;
  43. fclose(fin);
  44. return 0;
  45. }

YTU 2972: C语言习题5.24--文件操作1的更多相关文章

  1. YTU 2974: C语言习题5.26--文件操作3

    2974: C语言习题5.26--文件操作3 时间限制: 1 Sec  内存限制: 128 MB 提交: 213  解决: 92 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编号 ...

  2. YTU 2973: C语言习题5.25--文件操作2

    2973: C语言习题5.25--文件操作2 时间限制: 1 Sec  内存限制: 128 MB 提交: 242  解决: 105 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编 ...

  3. YTU 2418: C语言习题 矩阵元素变换

    2418: C语言习题 矩阵元素变换 时间限制: 1 Sec  内存限制: 128 MB 提交: 293  解决: 155 题目描述 将一个n×n(2<n<10,n为奇数)的矩阵中最大的元 ...

  4. YTU 2414: C语言习题 字符串排序

    2414: C语言习题 字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 656  解决: 305 题目描述 输入n个字符串,将它们按字母由小到大的顺序排列并输出.编写三个函数实 ...

  5. YTU 2425: C语言习题 输出月份

    2425: C语言习题 输出月份 时间限制: 1 Sec  内存限制: 128 MB 提交: 476  解决: 287 题目描述 编写一程序,输入月份号,输出该月的英文月名.例如,输入3,则输出Mar ...

  6. YTU 2420: C语言习题 不等长字符串排序

    2420: C语言习题 不等长字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 460  解决: 239 题目描述 在主函数中输入n(n<=10)个不等长的字符串.用另一函 ...

  7. YTU 2419: C语言习题 等长字符串排序

    2419: C语言习题 等长字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 650  解决: 249 题目描述 在主函数中输入n(n<=10)个等长的字符串.用另一函数对 ...

  8. YTU 2424: C语言习题 字符串比较

    2424: C语言习题 字符串比较 时间限制: 1 Sec  内存限制: 128 MB 提交: 1042  解决: 613 题目描述 写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数 ...

  9. YTU 2417: C语言习题 字符串长度

    2417: C语言习题 字符串长度 时间限制: 1 Sec  内存限制: 128 MB 提交: 758  解决: 548 题目描述 写一函数,求一个字符串的长度.在main函数中输入字符串,并输出其长 ...

随机推荐

  1. NSString

    // —————————NSString // NSString //1.初始化:直接字符串.格式化字符串.文件读取内容初始化 NSString *str1 = @"hello world! ...

  2. Leetcode: Trapping Rain Water II

    Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...

  3. Lintcode: Maximum Subarray III

    Given an array of integers and a number k, find k non-overlapping subarrays which have the largest s ...

  4. each实现原理

    <script> function isEach(arr, callback) { for (var i in arr) { callback(i, arr[i]); } }; funct ...

  5. VS2010程序打包

    今天,小白就来给各位做个打包的新手教程,此文仅是为了记录自己的学习过程与方便其他初次接触的打包的朋友们总结一下,希望大家能够受用.废话不多说,下面我们就来讲解下打包工程.首先,在项目中添加一个安装项目 ...

  6. GC是什么? 为什么要有GC?

    GC是什么? 为什么要有GC?  GC是垃圾收集器.  程序员不用担心内存管理,因为垃圾收集器会自动进行管理.要请求垃圾收集,可以调用下面的方法之一:  System.gc() Runtime.get ...

  7. paper 7:支持向量机系列四:Outliers —— 介绍支持向量机使用松弛变量处理 outliers 方法。

    在最开始讨论支持向量机的时候,我们就假定,数据是线性可分的,亦即我们可以找到一个可行的超平面将数据完全分开.后来为了处理非线性数据,使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性 ...

  8. ssh-copy-id帮你建立信任

    一.ssh-keygen -t rsa [nameA@machineA]$ ssh-keygen -t rsa Generating public/private rsa key pair. Ente ...

  9. 夺命雷公狗—angularjs—3—表单验证的高级用法

    其实我们的angularjs都是是块状代码,其实是可以在实际开发中保存下来以后就可以达到重复利用的目的了.. 废话不多说,直接上代码: <!doctype html> <html l ...

  10. 夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现

    我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class Commo ...