《C语言及程序设计》实践项目——用文件输入输出初步

返回:贺老师课程教学链接

【项目1-由键盘到文件】
(1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp ;
    char ch,fname[10];
    printf("文件名:");
    gets(fname);
    if ((fp=____(1)____)==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    while ((ch=getchar())!='#')
        fputc(____(2)____);
    ____(3)____;
    return 0;
}

(2)设上题建立了名为f1.dat的文件,请将这个文件拷贝到一个名为f2.dat的文件中。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2 ;
    char c;
    if ((fp1=fopen("f1.dat", ___(1)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    if ((fp2=fopen("f2.dat", ___(2)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    c=fgetc(fp1);
    while (___(3)___)
    {
        fputc(c,fp2);
        c=fgetc(fp1);
    }
    ___(4)___
    return 0;
}

(3)以下程序的功能是将文件file1.dat的内容输出到屏幕上并复制到文件file2.dat中。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE ___(1)___;
    char ch;
    fp1=fopen("file1.dat","r");
    fp2=fopen("file2.dat","w");
    while (!feof(fp1))
    {
        ch=___(2)___;
        putchar(ch);
        fputc(___(3)___);
    }
    fclose(fp1);
    fclose(fp2) ;
    return 0;
}

[参考解答]

【项目2-文件中的符号个数】
统计一个文本文件中数字、空格、字母出现的次数,以及文件的字节数,并将结果输出,文本文件名在程序中输入(请自建文本文件完成测试)。
[参考解答]

【项目3-成绩统计】
文件english.dat(这个文件中的数据量,超出了你之前所有的体验)中已经有了学生的英语考试成绩数据。
(1)请编程从english.dat中读取数据,求出这次考试的平均成绩,并统计输出优秀人数和不及格人数。请在下面程序基础上填空完成:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int score; //读入的成绩
    int excelent=0, fail=0,count=0;//分别代表优秀、不及格人数、总人数
    double sum=0,ave; //sum: 成绩和,ave: 平均分
    //以输入的方式(ios::in)打开文件
    FILE ____(1)____;
    fp=fopen(____(2)____);
    if(fp==NULL)
    {
        printf("open error!\n");
        exit(1);
    }
    while(fscanf(____(3)____)!=EOF)   //当读取成功……
    {
        count++;
        sum+=score;
        if(____(4)____)
            excelent++;
        else if(score<60)
            ____(5)____;
    }
    ____(6)____;
    //下面输出结果
    ave=sum/count;
    printf("总人数为:%d\n", count);
    printf("平均成绩为:%.2f\n", ave);
    printf("优秀人数:%d\n", excelent);
    printf("不及格人数:%d\n", fail);
    return 0;
}

(2)扩充上面的程序,要求将统计结果保存到数据文件statictic.dat中(提示:要用fprintf写入文件了)
(3)(用柱状图输出)编程序,求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。运行结果如图所示。试着将输出界面改变成成下面的样子(仅变输出方式)

[参考解答]

【项目4-算工资】
从文件salary.txt中读入工人的工号、基本工资、奖金,将奖金全部增加20%(好事)后,将工号、基本工资、奖金和应发工资(前项目之和)保存到文件salarylist.txt中。

[参考解答]

时间: 2024-09-09 22:49:55

《C语言及程序设计》实践项目——用文件输入输出初步的相关文章

《C++语言基础》实践项目——文本文件及应用

返回:贺老师课程教学链接 本周项目中用到的数据文件,请在这里下载:点击打开链接[项目1 - 小玩文件](1)下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整. #include <iostream> #include <cstdlib> #include _____________ // (1) using namespace std; int main() { fstream file; file.open("abc.txt", _

《C++语言基础》实践项目——多重继承

返回:贺老师课程教学链接 [项目1 - 教师兼干部类]分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部).要求: (1)在两个基类中都包含姓名.年龄.性别.地址.电话等数据成员. (2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资). (3)对两个基类中的姓名.年龄.性别.地址.电话等数据成员用相

《C++语言基础》实践项目——二进制文件及文件的随机读写

返回:贺老师课程教学链接 [项目1-用二进制文件处理学生成绩] (1)定义学生类,其中包含学号.姓名.C++课.高数和英语成绩及总分数据成员,成员函数根据需要确定. (2)读入学生的成绩,并求出总分,用对象数组进行存储.ASCII文件score.dat中保存的是100名学生的学号.姓名和C++课.高数和英语成绩. (3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,期末求好运). (4)为验证输出文件正确,再

《C++语言基础》实践项目——银行储蓄系统开发

返回:贺老师课程教学链接 教学目标 通过完成一个有实用价值的应用程序,体会利用C++语言解决问题的过程: 多次迭代,逐步完善,用可以运行的程序,鼓舞自己的学习 实训安排 看视频"18 应用系统开发:银行储蓄系统",并阅读博客中提供的参考解答,了解基本系统的开发. 基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序,能用文本文件存取数据(如示例中给出的技术): 拓展方向: 序号 加分项目 细       则 1 改变Bank类中用户信息的存储方

《C++语言基础》实践项目——链表类及其应用

返回:贺老师课程教学链接 [项目 - 链表类]动态链表也是程序设计中的一种非常有用的数据结构.可以说,是否能够理解有关操作的原理,决定了你是否有资格称为"科班"出身.在后续的专业基础课中,相关的内容还会从不同的角度,反复地认识,反复地实践.不过,在现阶段多些体验,也是很有必要的了.(1)阅读下面的程序,回顾一下动态链表,阅读程序过程中,请用笔画一画形成链表的过程中指针值的变化. #include <iostream> using namespace std; struct

《C++语言基础》实践项目——继承与派生

返回:贺老师课程教学链接 [项目0 - 是春哥啊]请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:Name: 春哥Grade: 19 #include <iostream> #include <cstring> using namespace std; class Person{ public: Person(char* s){ strcpy(name,s); } void display( ){ cout<<"Name: "<

《C++语言基础》实践项目——指针、const、static

返回:贺老师课程教学链接 [项目1-体验常成员函数]设计平面坐标点类,计算两点之间距离.到原点距离.关于坐标轴和原点的对称点等.在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改. class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0); double Distance1(CPo

《C++语言基础》实践项目——构造函数和析构函数

返回:贺老师课程教学链接 [项目1-三角形类的构造函数] 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triang

《C++语言基础》实践项目——运算符重载(一)

返回:贺老师课程教学链接 [项目1-实现复数类中的运算符重载](1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+(const Complex &c2); Complex operator-(const Complex &c2); Com