《C语言及程序设计》实践项目——文件操作

原创 2015年07月07日 11:10:53

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

【项目1 - 小玩文件】
1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;
    if((fp=fopen("abc.txt",_______))==NULL)  //(1)
    {
        printf("open error!\n");
        exit(1);
    }
    int i=0;
    while(________) // (2)
    {
        fgetc(fp);
        _________; // (3)
    }
    printf("Character: %d\n", i);
    fclose(________);// (4)
    return 0;
}

2、用键盘输入文件名,统计输出文件中每个字母、数字字符出现的次数;
[参考解答]

【项目2-用文本文件保存的学生名单】
文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。
(1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。

//定义学生结构体
typedef struct 
{
    string name;
    double cpp;
    double math;
    double english;
    double total;
}Student

(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。

int main( ){
    Student stud[200],t; //stud[200]为保存数据的对象数组
    //从文件score.dat中读入数据,保存到对象数组中

    //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
    return 0;
}

[参考解答]

【项目3 - 处理C语言源代码的程序】
用C语言写的源程序是一种文本文件。本项目将以C语言的源程序为操作对象,完成对源程序的一系列处理,如判断是否有main函数、将某些行加上注释等。各功能可以分别编制一个程序实现(建议用这种简单的方案),也可以将其集成在一起(向着自己做出IDE努力)。
(1)读入一个C++程序,判断其中是否只有一个main()函数,输出“暂时没有发现问题”,或者“没有main()函数”,或者“不能定义多个main()函数”;
提示1:简单处理,可以只比较判断“main()”,考虑实际上的各种可能,main后面的括号中有任意多个空格及void的都应该算在内。建议按最简单的情形处理。
提示2:建议设计一个函数,将读到的代码与字符串“main()”进行比较。函数用于判断s1是否“包含”在读入的一行s2中,调用时,形参s1处的实参用”main()”即可,这样写提升了“抽象”级别,更容易实现,对应更高的代码质量。
(2)读入一个C语言程序,使程序中的所有左花括号“{”和右花括号“}”都单独占一行,新程序保存到另一个.c文件中,并在屏幕上显示处理过的程序,显示时加上行号。
(3)读入一个C语言程序,输入m、n两个数字,从第m行起的n行代码将作为注释使用(即在这些行前面加上”//”),新程序保存到另一个.c文件中,并在屏幕上显示处理过的程序,显示时加上行号。
[参考解答]

【项目4 - 间隔选职工】
(1)从键盘输入10名职工的工号、姓名和年龄,并保存到二进制文件worker.rec中
用下面的结构体表示一名职工的记录

typedef struct 
{ 
    int num;   //工号
    char name[10];   //姓名
    int age;  //年龄
} Worker;

(2)从文件中读取并显示顺序号为奇数的职工记录。(即第 1,3,5,…号职工的数据)
[参考解答]

【项目5 - 二进制文件浏览器】
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
这里写图片描述
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
(2)通过为main函数加参数,在命令行方式下,输入“命令加文件名”的方式,就可以显示该文件的内容,也采用如上16进制和ASCII对照的形式。
[参考解答]

版权声明:本文为博主原创文章,未经博主允许不得转载。

《C语言及程序设计》实践项目——使用变量

返回:贺老师课程教学链接  C语言及程序设计初步  【修改程序】下面的程序要求两个并联电阻阻值。程序中存在语法错误,请修改程序,使之能正确求解问题。#include int main( ) { ...
  • sxhelijian
  • sxhelijian
  • 2015年01月06日 10:24
  • 2327

《C语言及程序设计》实践项目——链表初步

返回:贺老师课程教学链接【项目1-链表的合并】 输入一个整数m,表示A链表的长度,再输入m个数作为A链表中的m个数据元素,建立链表A,其头指针为heada。输入一个整数n,表示B链表的长度,再输入n...
  • sxhelijian
  • sxhelijian
  • 2015年07月05日 10:24
  • 1322

《C语言及程序设计》实践项目——动态数组

返回:贺老师课程教学链接【项目1-学生人数没个准】输入学生成绩,输出高于平均成绩的学生序号和成绩。其中学生人数不定,可能10个,可能1000。在录入成绩之前,学生人数由键盘输入。由于要先求出平均成绩,...
  • sxhelijian
  • sxhelijian
  • 2015年05月02日 11:48
  • 1561

《C语言及程序设计》实践项目——函数应用

返回:贺老师课程教学链接【项目1-k次方之和】设计程序,计算:请在下面的程序结构基础上完成设计。#include int power(int m,int n); //求m的n次方(m^n) int s...
  • sxhelijian
  • sxhelijian
  • 2015年04月23日 22:04
  • 1437

《C语言及程序设计》实践项目——一维数组初步

返回:贺老师课程教学链接【项目1 - 数组大折腾】(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数...
  • sxhelijian
  • sxhelijian
  • 2015年04月26日 19:15
  • 1764

《C语言及程序设计》实践项目——循环嵌套

返回:贺老师课程教学链接【项目1:位乘大于位和】下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请将空白处缺少的成份补齐。#include int main( ) { in...
  • sxhelijian
  • sxhelijian
  • 2015年04月18日 15:28
  • 1446

《C语言及程序设计》实践项目——数字游戏

返回:贺老师课程教学链接说明:这里给出的题目比较多,可以耐心地做下去。初学者一旦通过这样一些小的程序,走出了循环的困局,程序设计的感觉,也便逐渐好了起来。循环作为初学者必须迈过去的一道坎,这样的训练自...
  • sxhelijian
  • sxhelijian
  • 2015年04月18日 20:58
  • 1673

《C语言及程序设计》实践项目——递归函数

返回:贺老师课程教学链接【项目-递归函数】 (1)立方累加和:用递归函数求f(n)=13+23+...+n3f(n)=1^3+2^3+...+n^3,要求先将f(n)f(n)数学表达式表示成递归的形...
  • sxhelijian
  • sxhelijian
  • 2015年07月02日 21:33
  • 1152

《C语言及程序设计》实践项目——输出小星星

返回:贺老师课程教学链接 编写程序,输出如下的星号图[(3)详解]  [全解链接]...
  • sxhelijian
  • sxhelijian
  • 2015年03月09日 19:12
  • 2853

《C语言及程序设计》实践项目——发现Bug

返回:贺老师课程教学链接【项目1-sin泰勒展式中的错误】下面是sin函数的泰勒展式:(注:x取弧度值,而非角度值)编写了double mysin(double x)用于求sin值,却“死”在了122...
  • sxhelijian
  • sxhelijian
  • 2015年04月25日 19:07
  • 1306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C语言及程序设计》实践项目——文件操作
举报原因:
原因补充:

(最多只允许输入30个字)