C语言OJ项目参考(2972)从文件中读数据

简介: 2972: 从文件中读数据Description   文本文件score.dic 中存储了n名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示:145811 fuxin 100145811 chengxian 90145812 zhangxue 92145812 lijun 88……  文件中存储

2972: 从文件中读数据

Description
  文本文件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;
}

Input
n名学生的信息(班级编号,姓名,成绩)(文件读入)
Output
每个班级的班级编号和平均成绩
Sample Input
无(调试时请自建文件作为输入)
Sample Output
145811 95
145812 90

参考解答:

#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);   /* 强制退出,并返回错误码 */
    }
    /****************/
    char name[20];//在本题中,姓名只读入却不做处理
    fscanf(fin,"%d%s%d",&curClass, name, &curScore);
    sumScore=curScore;
    lastClass=curClass;
    num=1;
    while(fscanf(fin,"%d%s%d",&curClass, name, &curScore)!=EOF)
    {
        if(lastClass==curClass)
        {
            num++;
            sumScore+=curScore;
        }
        else
        {
            printf("%d\t%d\n",lastClass,sumScore/num);
            num=1;
            sumScore=curScore;
            lastClass=curClass;
        }
    }
    printf("%d\t%d\n",lastClass,sumScore/num);
    fclose(fin);
    /*****************/
    return 0;
}
目录
相关文章
|
13天前
|
Linux C语言
C语言获取文件长度
C语言获取文件长度
|
25天前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
30 1
|
25天前
|
程序员 C语言
【C语言实战项目】猜数字游戏
【C语言实战项目】猜数字游戏
27 0
【C语言实战项目】猜数字游戏
|
28天前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
31 0
|
1月前
|
C语言
C语言对文件的输入输出
C语言对文件的输入输出
17 0
C4.
|
1月前
|
存储 程序员 数据库
C语言顺序读写数据文件
C语言顺序读写数据文件
C4.
14 0
|
1月前
|
存储 C语言
C语言-打开与关闭文件
C语言-打开与关闭文件
21 1
|
3月前
|
C语言
C语言Oj题判断素数几种方式详解
输入一个数判断它是不是素数,并且不是的情况把它打印出来不是素数。
|
24天前
|
程序员 C语言
【C语言实战项目】通讯录(动态增容版)
【C语言实战项目】通讯录(动态增容版)
19 0
|
25天前
|
编译器 定位技术 C语言
【C语言实战项目】扫雷游戏
【C语言实战项目】扫雷游戏
26 0