C语言及程序设计初步例程-43 从文本文件中读入数据

贺老师教学链接  C语言及程序设计初步 本课讲解


编程序,实现文本文件的复制
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fpin, *fpout;
    char c;
    if ((fpin=fopen("source.txt", "r"))==NULL)
    {
        printf("Source file cannot open!");
        exit(0);
    }
    if ((fpout=fopen("target.txt", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    while((c=fgetc(fpin))!=EOF)
        fputc(c, fpout);
    printf("Finish copy!\n");
    fclose(fpin);
    fclose(fpout);
    return 0;
}

应用:大奖赛计分,将计算结果数据存入文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;
    if ((fp=fopen("record.txt", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    int judgeNum, singerNum, j, s;
    float mark, sum, aver, max, min;
    scanf("%d %d", &judgeNum, &singerNum);
    fprintf(fp, "No.\t");
    for(j=1;j<=judgeNum;j++)
        fprintf(fp, "%d\t", j);
    fprintf(fp, "Max\tMin\taver\n");
    s=1;
    while(s<=singerNum)
    {
        sum=0;
        max=0;
        min=10;
        j=1;
        fprintf(fp, "%d\t", s);
        do
        {
            scanf("%f",&mark);
            fprintf(fp, "%.2f\t", mark);
            sum+=mark;
            if(max<mark) max=mark;
            if(min>mark) min=mark;
            j++;
        }
        while(j<=judgeNum);
        aver = (sum-max-min)/(judgeNum-2);
        fprintf(fp, "%.2f\t%.2f\t%.2f\n", max, min, aver);
        s++;
    }
    fclose(fp);
    return 0;
}

应用:大奖赛计分,从文件中读取数据,并将结果存入文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp1, *fp2;
    if ((fp1=fopen("score.dat", "r"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    if ((fp2=fopen("result.csv", "w"))==NULL)
    {
        printf("Target file cannot open!");
        exit(0);
    }
    int judgeNum=11, j, s;
    float mark, sum, aver, max, min;
    fprintf(fp2, "No.,Max,Min,aver\n");
    while(fscanf(fp1, "%d", &s)==1)
    {
        sum=0;
        max=0;
        min=10;
        fprintf(fp2, "%d,", s);
        printf("calculate %d ...\n", s);
        j=1;
        do
        {
            fscanf(fp1, "%f",&mark);
            sum+=mark;
            if(max<mark) max=mark;
            if(min>mark) min=mark;
            j++;
        }
        while(j<=judgeNum);
        aver = (sum-max-min)/(judgeNum-2);
        fprintf(fp2, "%.2f,%.2f,%.2f\n", max, min, aver);
    }
    fclose(fp1);
     fclose(fp2);
    return 0;
}

用下面的数据,建立文件score.dat
1 7.11 8.52 8.58 8.81 7.79 7.53 8.95 8.97 8.95 7.26 8.72
2 7.95 7.46 8.19 9.9 7.11 7.77 8.5 7.88 8.58 8.66 7.15
3 7.75 8.75 8.63 8.54 8.17 8.34 8.37 8.97 7.87 8.25 8.22
4 7.92 7.75 7.11 7.88 8.83 8.58 7.5 7.14 7.23 7.61 7.16
5 7.47 7.77 8.97 7.11 7.64 7.05 8.57 8.35 8.11 7.06 8.35
6 8.99 8.11 7.43 8.93 7.75 7.99 7.76 8.35 7.16 8.27 7.57
7 9.47 7.66 8.71 7.42 9.17 7.68 7.76 7.65 8.36 7.07 7.1
8 8.42 8.31 8.93 7.51 8.64 8.45 8.75 8.82 7.58 8.59 7.88
9 7.32 8.2 7.03 9 8.39 8.02 8 8.74 7.88 7.27 8.26
10 7.8 7.6 8.72 8.8 8.39 7.09 8.42 8.34 8.91 8.4 7.38
11 8.69 7.18 7.2 8.99 7.12 8.57 7.27 8.99 8.49 7.15 8.05
12 8.1 7.49 7.46 7.86 8.53 8.66 8.29 8.96 8.41 8.72 8.4
13 7.87 8.06 7.34 7.21 8.3 7.42 7.95 9.07 7.59 8.16 8.99
14 7.23 7.43 8.83 7.33 7.25 8.76 8.12 7.65 8.94 8.05 7.28
15 7.08 7.39 7.13 7.41 8 8.08 7.26 7.52 8.55 8.54 8.68
16 7.4 7.91 8.52 7.92 7.7 8.81 7.74 8.27 7.51 7.84 7.37
17 7.15 7.88 7.31 7.16 8.39 8.73 8.09 9.7 8.67 7.66 7.1
18 8.68 7.79 7.74 7.78 7.69 8.13 8.18 8.94 7.39 8.67 8.38
19 7.73 7.71 9.64 8.84 8.97 8.12 8.99 7.41 8.53 8.93 7.59
20 8.74 7.58 8.54 8.81 7.31 7.21 7.39 8.83 9.17 8.22 7.48
21 8.52 8.56 8.68 7.97 7.06 7.24 7.29 8.9 8.82 7.74 9.3
22 7.59 8.82 7.93 8.73 8.88 8.86 7.29 7.79 7.1 8.67 8.79
23 7.38 7.89 8.01 7.2 8.25 7.82 8.75 7.47 8.44 7.95 8.79
24 7.25 8.2 8.18 8.7 7.85 8.53 8.93 8.03 8.65 8.71 7.28
25 8.66 8.31 8.49 8.62 7.59 7.03 7.75 8.63 7.09 9.72 7.86
26 9.08 7.31 8.03 9.3 8 7.26 8.09 7.52 8.22 7.66 8.99

实验2 文法的读入、判定和处理 一、实验目的 熟悉文法的结构,了解文法在计算机内的表示方法。 二、实验内容 1、 设计一个表示文法的数据结构; 2、 从文本文件读入文法,利用定义的数据结构存放文法,并输出; 3、 本实验结果将来还有用。 三、实验要求 1、 了解文法定义的4个部分: G(Vn, Vt, S, P) Vn 文法的非终结符号集合,在实验用大写的英文字母表示; Vt 文法的终结符号集合,在实验用小写的英文字母表示; S 开始符号,在实验是Vn集合的一个元素; P 产生式,分左部和右部,左部为非终结符号的一个,右部为终结符号或非终结符号组成的字符串,如S->ab|c 2、 根据文法各个部分的性质,设计一个合理的数据结构用来表示文法, 1) 若使用C语言编写,则文法可以设计成结构体形式,结构体应包含上述的4部分, 2) 若使用C++语言或java语言编写,则文法可以设计成文法类形式,类至少含有4个数据成员,分别表示上述4个部分 文法数据结构的具体设计由学生根据自己想法完成,并使用C或C++语言或Java实现设计的数据结构。 3、 利用完成的数据结构完成以下功能: 1) 从文本文件读入文法(文法事先应写入文本文件); 2) 根据文法产生式的结构,分析出文法的4个部分,分别写入定义好的文法数据结构的相应部分; 3) 整理文法的结构,判断该文法的文法类型,是否为0型,1型,2型或3型文法,并输出判断结果; 4) 在计算机屏幕或者文本框输出文法,文法输出按照一个非终结符号一行,开始符号引出的产生式写在第一行,同一个非终结符号的候选式用“|”分隔的方式输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值