第一章 绪论(6)

来源:网络收集 时间:2025-07-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

10. 简述C++的I/O格式控制。类ios中最常用的格式控制成员函数有哪些?格式控制符与格式控制成员函数在使用上有哪些异同?

11. 试述磁盘文件I/O流类的类结构。ifstream、ofstream与fstream这几个专用于磁盘文件IO的流类(类型)所支持的功能是什么?

12. 简述文件的打开和关闭的过程和步骤。C++提供了什么方式(及语句)来实现文件的打开与关闭?

13. 文件读写时按文本(text)方式和按二进制(binary)方式有什么区别?如何在打开文件时对这种读写方式进行指定?

14. 为什么可以使用插入与提取运算符对磁盘文件进行读写操作?使用它们时要注意些什么? 15. 叙述成员函数get、put;read、write;以及getline各自的功能与使用特点,通常情况下如何使用这些成员函数来进行磁盘文件的读写操作?

16. 以text文件形式存储数据的优点和缺点各是什么?以binary文件形式存储数据的优缺点又各是什么?程序员通常以什么标准来决定将数据存储为text文件或者binary文件两种形式之一?

17. 如何通过使用类成员函数write与read,并配合使用类成员函数seekg、tellg以及seekp和tellp,来对文件进行“随机性”(非顺序性)的读写操作?

练 习 题

1. 假设有说明:int i=77;double d=8765.56789;编程序,使用控制输出格式的函数或格式控制符,将整数i按照三种不同进制、将实数d按照如下四种不同的格式输出到cout对象即屏幕上。使屏幕显示结果为: 77(10) = 0115(8) = 0x4d(16) ####8765.6 8765.6#### 8765.56789 8.765567890E+003

2. 假设有说明:int i=77;double d=8765.56789;编程序,使用控制输出格式的函数或格式控制符,将整数i按照三种不同进制、将实数d按照如下四种不同的格式输出到fout对象即对应于“f.txt”的text型磁盘文件中。使文件中的结果数据为: 77(10) = 0115(8) = 0x4d(16) ####8765.6 8765.6#### 8765.56789 8.765567890E+003

提示:往text型磁盘文件中输出数据时,也可通过使用控制输出格式的函数以及格式控制符来设定所需的数据输出格式。程序执行结束后,可使用任何一个编辑器打开磁盘文件“f.txt”,去查看其中所保存的那些结果数据(注意,上一练习所输出的相同结果是在屏幕上)。

3. 编程序,对k=1,2,3,…,14,15,按下式分别计算出15组(i,d,c):整数i=2*k-1;实数d=k*k+k-9.8;字符c='H'+k。并通过使用运算符“<<”将这15组数据保存到自定义的text型磁盘文件ft.txt之中;而后再通过使用运算符“>>”将上述磁盘文件中的数据读出来并显示到屏幕上。

4. 通过使用运算符“>>”和“<<”,对自定义的text型磁盘文件进行如下的指定操作。

(1) 对i=1,2,3,...,15,计算d=i*i+0.5,并将15个结果写出到自定义的text型磁盘文件f1.txt中(注意,f1文件中的数据从小到大有序);

(2) 对i=1,2,3,...,10,计算d=10*i+0.5,并将10个结果写出到自定义的text型磁

盘文件f2.txt中,而后再写出第11个数:357.9(注意,f2文件中的数据也从小到大有序); (3) 读出文件f1.txt以及f2.txt中的数据,用来形成text型磁盘文件f3.txt,但要求存放于f3.txt中的数据仍然是有序的(按照从小到大的顺序); (4) 从头到尾读出f3.txt中的数据显示在屏幕上。

5. 利用get与put成员函数完成文件的拷贝工作,假设被拷贝的“源文件”以及拷贝到的“目的文件”的名字与路径均由命令行参数来提供。下面给出实现程序“构架”: void main(int argc, char* argv[ ]) { …

ifstream fin(argv[1]); //命令行参数1提供被拷贝的“源文件” ofstream fout(argv[2]); //命令行参数2提供拷贝到的“目的文件” char ch; fin.get(ch);

while(!fin.eof()){ //从头读到文件结束(当前符号非文件结束符时继续) fout.put(ch); //对流fout进行写 fin.get(ch); //对流fin进行读 } … }

注意:在VC6集成开发环境下,运行这种main带参数的程序之前,要使用菜单命令,通过如下步骤来设置命令行参数(程序参数):Project → Settings → Debug → 在“Program arguments:”框内,输入以空格分割的各命令行参数,如,“aa.cpp bb.cpp”(该框为空时,表示没有命令行参数)→ OK。

6. 编程序,对k=1,2,3,…,14,15,按下式分别计算出15组(i,d,c):整数i=2*k-1;实数d=k*k+k-9.8;字符c='H'+k。将上述15组数据看成15个结构体(要自定义结构类型,其分量具有i、d和c),并通过使用成员函数write将它们保存到自定义的binary型磁盘文件fb.bin之中;而后再通过使用成员函数read将上述磁盘文件中的数据读出来并显示到屏幕上。 7. 通过使用write与read成员函数,对自定义的binary型磁盘文件进行如下的指定操作。 (1) 对i=1,2,3,...,15,计算d=i*i+0.5,并将15个结果写出到自定义的binary型磁盘文件f1.bin中(注意,f1文件中的数据从小到大有序);

(2) 对i=1,2,3,...,10,计算d=10*i+0.5,并将10个结果写出到自定义的binary型磁盘文件f2.bin中,而后再写出第11个数:357.9(注意,f2文件中的数据也从小到大有序); (3) 读出文件f1.bin以及f2.bin中的数据,用来形成binary型磁盘文件f3.bin,但要求存放于f3.bin中的数据仍然是有序的(按照从小到大的顺序); (4) 从头到尾读出f3.bin中的数据显示在屏幕上。

8. 编程序CompFile,首先让用户输入两个文件名及其路径(二文件均为text文件),而后通过使用类成员函数getline逐行读入这两个指定文件的内容并进行比较。若发现有不同,则在屏幕上显示出相异二行的行号及其内容,并暂停下来询问用户是否需要继续比较后继行,直到用户回答不需要继续进行比较,或者已经比到了二文件的结束时停止处理。

思考:也可改写程序,将“让用户输入两个文件名及其路径”改为从命令行参数处获取这两个文件名及其路径。

9. 使用getline成员函数读入某个text文件中的“一篇文章”(如可以是一个C++源程序,文件名由用户从键盘输入),而后将该文件的各空行以及各程序行中的注解均删除掉(认为该行中从第一个双撇符号“//”开始直至行末的所有符号为注解),并将删除注解后的结果行写出到另一个文件中,并同时数出结果文件的总行数totalLine,以及结果文件中最长行和最短行的行长

maxLineLen与minLineLen。

10. 编程序,从键盘输入某个C++源程序文件名,而后通过getline依次读入该文件中的各行(假设每行都不超过100个字符),并统计显示出该源程序文件中出现了哪些你所关心的C++关键字,以及各关键字出现的次数(所关心的那一批关键字由程序进行指定)。

提示:可将m个所关心的关键字存放在一个二维字符数组A之中,而后从各读入行中“分解”出每一个“字”,并依次与A中的各关键字进行比较。若二维字符数组A中的关键字是按“从小到大”的顺序存放的话,则还可以使用折半查找方法在A中进行“查找”以提高速度。

11. 从键盘输入k个实数,先将它们写出(存放)到一个binary型文件f.bin之中,而后再使用随机访问方式“从后往前”读入每一个数据并显示在屏幕上(即按照与输入相反的顺序读入并显示)。

提示:可使用“seekg”先定位到最后写出的那一数据处并使用“read”将其读入,再往下是倒数第二靠后的、...,直至全部读入并处理完毕。

12. 对参赛结果分数进行处理:参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore为去掉一个最高分和一个最低分后另m-2个得分的平均值。

假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。

请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。

假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为: 1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2 2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3 3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6 4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3 5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9

那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为: ----------------------------------------------------------

参赛号 姓 名 最高分 最低分 累积分 最后得分 ----------------------------------------------------------

1 zhangjin 9.7 7.9 44.9 8.98 2 lintao 9.3 8.2 43.9 8.78 3 guojian 8.9 8.4 42.9 8.58 4 maling 8.9 7.9 42.2 8.44 5 liuyifan 9.8 8.9 46.3 9.26 ----------------------------------------------------------

思考:可进一步考虑找出比赛的第1至第k名,也在屏幕以及f2.txt中同时输出相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,f1.txt中初始数据在前者名次优先)。 13. 设计一个类CStudent,类中包含一个学生的基本数据如下: 编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。

并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如: 1 LiPing m 18 89 98 94

请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行

随机读写处理)。

并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:

(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。 (2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。 (3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。 (4) 计算某编号学生的总成绩与平均成绩。

(5) 列出所有总成绩超过270分的男同学的有关信息。

思考:可进一步对上述程序进行扩充,如,添加学生基本数据(籍贯,专业,班级,其他各门成绩,奖惩记录等),并添加所需要的其他相关处理函数(如可通过咨询教学办公室管理人员后确立),进而将其编制成为一个简单而实用的小型学籍与成绩管理软件。

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库第一章 绪论(6)在线全文阅读。

第一章 绪论(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/401026.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219