




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章流类库和输入/输出习题一本概念与基础知识测试题91填空题911在C中“流”是表示(1)。从流中取得数据称为(2),用符号(3)表示;向流中添加数据称为(4),用符号(5)表示。答案(1)数据从一个对象到另一个对象的传送(2)提取操作(3)(4)插入操作(5)(STREAM_EXTRACTIONOPERATOR)(6)”)运算符在缺省情况下是跳过空白(包括空格,制表,BACKSPACE和回车等)的,这样拷贝的文件会缺少一些字符。第二,该程序应能确定文件是否拷贝结束。按行进行拷贝,GETLINE回车换行符并不放在BUF中,因此要加一个回车换行符。929对文件流,“”运算符完成什么功能答返回状态字STATE操作非法和操作失败这两位。9210二进制文件读函数READ能否知道文件是否结束应怎样判断文件结束答读函数并不能知道文件是否结束,可用状态函数INTIOSEOF来判断文件是否结束。必须指出系统是根据当前操作的实际情况设置状态位,如需根据状态位来判断下一步的操作,必须在一次操作后立即去调取状态位,以判断本次操作是否有效。9211由二进制文件和文本文件来保存对象各有什么优点和缺点答使用二进制文件,可以控制字节长度,读写数据时不会出现二义性,可靠性高。同时不知格式是无法读取的,保密性好。文件结束后,系统不会再读(见EOFBIT的说明),但程序不会自动停下来,所以要判断文件中是否已没有数据。使用文本文件来保存对象,操作简单,但谁都可以读取这些数据,无保密性。9212文件的随机访问为什么总是用二进制文件,而不用文本文件答在C中可以由程序来实现文件指针的移动,从而实现文件的随机访问,即可读写流中任意一段内容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。9213怎样使用ISTREAM和OSTREAM的成员函数来实现随机访问文件答在IOS类中说明了一个公有枚举类型ENUMSEEK_DIRBEG0,/文件开头CUR1,/文件指针的当前位置END2/文件结尾ISTREAM类中提供了如下三个成员函数ISTREAM/指针直接定位ISTREAM/指针相对定位LONGISTREAMTELLG/返回当前指针位置SEEKGSTREAMOFF,IOSSEEK_DIR应用最广,如DATAFILESEEKG20L,IOSCUR表示将文件定位指针从当前位置向文件头部方向移20个字节。DATAFILESEEKG20L,IOSBEG表示将文件定位指针从文件头向文件尾方向移20个字节。DATAFILESEEKG20L,IOSEND表示将文件定位指针从文件尾向文件头方向移20个字节。TELLG和SEEKG往往配合使用。OSTREAM类也提供了三个成员函数管理文件定位指针,它们是OSTREAMOSTREAMLONGOSTREAMTELLP定位指针只有一个但函数有两组,这两组个函数功能完全一样。二编程与综合练习题93编程实现以下数据输入输出A以左对齐方式输出整数,域宽为12;B以八进制、十进制、十六进制输入输出整数;C实现浮点数的指数格式和定点格式的输入输出,并指定精度;D把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读入,以回车换行符结束;E以上要求用流成员函数和流操作子各做一遍。解特别注意FLAGS和SETF的使用方法。注意注释。INCLUDEINCLUDEUSINGNAMESPACESTDINTMAINVOIDINTINUM1255,INUM28191,INUM365535DOUBLEFNUM31415926535,FNUM1CHARSTR255COUTFNUM1/输入31415926535COUTUSINGNAMESPACESTDINTMAINVOIDCHARCH,STR255DOCOUTCHCINGET/吸收输入YORN时留下的回车WHILECHY|CHYCOUT”运算符。INCLUDEINCLUDEINCLUDEINCLUDEUSINGNAMESPACESTDCLASSSTUDENTINTID/学号STRINGNAME/姓名CHARSEX/性别INTAGE/年龄STRINGADDRESS/家庭地址FLOATENG,PHY,MATH,ELECTRON/英语,物理,数学和电子学成绩PUBLICSTUDENTINT0,STRING“,CHAR,INT0,STRING“,FLOAT0,FLOAT0,FLOAT0,FLOAT0FRIENDOSTREAM/重载提取运算符/流类作为形式参数必须是引用STUDENTSTUDENTINTI,STRINGN,CHARS,INTA,STRINGADD,FLOATEN,FLOATPH,FLOATMA,FLOATELEIDINAMENSEXSAGEAADDRESSADDENGENPHYPHMATHMAELECTRONELEOSTREAMCOUTSTNAMECOUTSTSEXCOUTSTAGECOUTSTADDRESSCOUTSTENGSTPHYSTMATHSTELECTRONRETURNSOURINTMAINSTUDENTST1,ST22104105,“陈英“,M,19,“黄山路380号“,89,78,90,96CINST1COUT”运算符,对所有可能的错误都能要求重输。解INCLUDEUSINGNAMESPACESTDCLASSCOMPLEXDOUBLEREAL,IMAGEPUBLICCOMPLEXDOUBLER00,DOUBLEI00REALR,IMAGEI/定义构造函数/见【例57】,这里省略,以节约篇幅FRIENDOSTREAM/流类作为形式参数必须是引用OSTREAMR,IRR,I整个复数输完才可回车/容错强,如SDFR56CV,S79NML,45I,78回车可正确判读为56,79DOUBLERE0,IM0CHARC0DOSCWHILECWHILEC/实部DOSGETC/因为可能是回车WHILECN/读空数字串后的无用字符IFC,DO/只读数字串SCWHILEC/虚部DOSGETC/因为可能是回车WHILECN/读空数字串后的无用字符ELSEIM0/无此步,第二次赋值出错IFCSCLEARIOSFAILBIT/漏了括号给一个操作失败标志ELSESPUTBACKC/无括号,返回一个字符到输入缓冲区SRE/实部DOSGETC/因为可能是回车WHILECN/读空数字串后的无用字符IFC,DO/只读数字串SCWHILEC/虚部DOSGETC/因为可能是回车WHILECN/读空数字串后的无用字符ELSEIM0/无此步,第二次赋值出错IFSACOMPLEXRE,IMRETURNSINTMAINCOMPLEXA,B,C,DCOUTACOUTBCOUTCCOUTDCOUTINCLUDE/不包含INCLUDEUSINGNAMESPACESTDINTMAININTLINE0CHARFILENAME256,BUF256FSTREAMSFILE,DFILECOUTFILENAME/对路径各方面而言空格是无关紧要的,否则要用GETLINE等成员函数SFILEOPENFILENAME,IOSIN/打开一个已存在的文件WHILESFILECOUTFILENAMESFILEOPENFILENAME,IOSINCOUTFILENAME/只能创建文件,不能建立子目录,如路径不存在则失败DFILEOPENFILENAME,IOSOUTIFDFILECOUTINCLUDEINCLUDEUSINGNAMESPACESTDINTMAININTNCHARFILENAME256,BUF100FSTREAMSFILE,DFILECOUTFILENAME/对路径各方面而言空格是无关紧要的,否则要用GETLINE等成员函数SFILEOPENFILENAME,IOSIN|IOSBINARY/打开一个已存在的二进制文件WHILESFILECOUTFILENAMESFILEOPENFILENAME,IOSIN|IOSBINARYCOUTFILENAME/只能创建文件,不能建立子目录,如路径不存在则失败DFILEOPENFILENAME,IOSAPP|IOSOUT|IOSBINARY/文件指针在尾部IFDFILECOUTINCLUDEINCLUDEUSINGNAMESPACESTDINTMAININTNCHARFILENAME256,BUF100FSTREAMSFILE,DFILECOUTFILENAME/对路径各方面而言空格是无关紧要的,否则要用GETLINE等成员函数SFILEOPENFILENAME,IOSIN|IOSBINARY/打开一个已存在的二进制文件WHILESFILECOUTFILENAMESFILEOPENFILENAME,IOSIN|IOSBINARYCOUTFILENAME/只能创建文件,不能建立子目录,如路径不存在则失败DFILEOPENFILENAME,IOSIN|IOSOUT|IOSBINARY/打开输入输出文件IFDFILEDFILECLEAR0DFILEOPENFILENAME,IOSOUT/建立输出文件DFILECLOSEDFILEOPENFILENAME,IOSIN|IOSOUT|IOSBINARY/改为输入输出文件DFILESEEKP0,IOSEND/写指针重定位到文件尾,SEEKP和SEEKG是同一个文件指针WHILESFILEEOF/二进制方式需另判文件是否结束ASFILEREADBUF,100NSFILEGCOUNTDFILEWRITEBUF,N/按实际读取字节数写SFILECLOSEDFILECLOSERETURN0910采用筛选法求100以内的所有素数(参见【例316】)。将所得数据存入文本文件和二进制文件。对送入文本文件中的素数,要求存放格式是每行10个素数,每个数占6个字符,左对齐;可用任一文本编辑器将它打开阅读。二进制文件整型数的长度请用SIZEOF来获得,要求可以正序读出,也可以逆序读出(利用文件定位指针移动实现),读出数据按文本文件中的格式输出显示。解前半题文本文件与习题317相同,只是那里是右对齐,这里只新做了二进制文件。注意逆序输出前,试读看有多少数据时,一旦读到文件结束,EOFBIT1,不清0,后面操作不能进行。INCLUDEINCLUDEINCLUDECONSTINTN100VOIDMAINOFSTREAMOFILEIFSTREAMIFILEINTAN,I,JCHARCH,B256FORI0ICHIFCHY|CHYIFILEOPEN“MYFILE9_9TXT“I0WHILEIFILEGETBI/读标题,不可用,它不能读白字符,IFBINBREAKIBI0COUTFLAGSIOSLEFTCOUTI/由文件读入IFIFILEEOF0BREAKCOUTCHIFCHY|CHYCOUNT0IFILEOPEN“MYFILE9_9DAT“,IOSIN|IOSBINARYWHILE1IFILEREADCHARIFIFILEEOF0BREAKCOUTCHIFCHY|CHYCOUNT0IFILEOPEN“MYFILE9_9DAT“,IOSIN|IOSBINARYWHILE1IFILEREADCHARIFIFILEEOF0BREAKCOUNTIFILECLEAR0/当文件读完时,EOFBIT1,不清0,后面的操作不能进行IFILESEEKG4,IOSENDFORJ1JINCLUDEINCLUDEINCLUDEUSINGNAMESPACESTDCLASSSINXDOUBLEDEGREE/角度DOUBLEVALUE/正弦值PUBLICSINXDOUBLE0VOIDDISPLAYVOIDBDATATOFILEFSTREAM/文件流类作为形式参数必须是引用VOIDBDATAFROMFILEFSTREAMVOIDDATAINPUTDOUBLEDEGBOOLOPERATORCLASSARRAYTELEMENTSCHARNAME20INTSUBSCRIPT/已用最大下标值INTMAXSIZEFSTREAMDATAFILEPUBLICARRAYCHAR“MYFILE“,INT20ARRAYBOOLISFULLCONSTRETURNSUBSCRIPTMAXSIZE1VOIDRENEWS/数组扩大一倍VOIDORDINSERTT/升序输入VOIDLISTSHOW/显示数组TEMPLATEARRAYARRAYCHARFILENAME,INTMAXSMAXSIZEMAXSSUBSCRIPT1/私有数据不容许直接赋初值,必须在构造函数中赋初值STRCPYNAME,FILENAMETTEMPELEMENTSNEWTMAXSIZEDATAFILEOPENNAME,IOSBINARY|IOSINIFDATAFILE0WHILEDATAFILEEOFTEMPBDATAFROMFILEDATAFILE/DATAFILEREADCHAR/直接读写法与使用成员函数结果相同IFDATAFILEEOF0/读到无数据可读后,即读入不成功,EOFBIT为1ORDINSERTTEMPDATAFILECLOSEDATAFILECLEAR0/采用标准库不可少,前面读到过文件结束或打开文件失败,无法恢复TEMPLATEARRAYARRAYINTIDATAFILEOPENNAME,IOSBINARY|IOSOUTFORI0IVOIDARRAYRENEWSINTITTEMPELEMENTSMAXSIZE2ELEMENTSNEWTMAXSIZEFORI0IVOIDARRAYORDINSERTTIFISFULLRENEWSFORI0IIJELEMENTSJ1ELEMENTSJSUBSCRIPTIFSUBSCRIPT1SUBSCRIPT/考虑到进入的第一项ELEMENTSIELEMTEMPLATEVOIDARRAYLISTSHOWINTIFORI0IVOIDMERGECHARFILENAME1,CHARFILENAME2,CHARFILENAMEFSTREAMSDATAFILE1FILENAME1,IOSOUT|IOSIN|IOSBINARYFSTREAMSDATAFILE2FILENAME2,IOSOUT|IOSIN|IOSBINARYFSTREAMDDATAFILEFILENAME,IOSOUT|IOSBINARYINTI0,J0,K0,NS1,NS2TTEMPS1,TEMPS2WHILESDATAFILE1EOF0/侧元素数量,注意会多出一个SDATAFILE1READCHARINS1I1COUTMYLIST“MYDATA1“COUTMYLIST“MYDATA2“COUT“MYDATA1“,“MYDATA2“,“MYDATA“/按题意要求两个文件归并直接使用文件ARRAYMYLIST“MYDATA“COUTINCLUDEINCLUDEINCLUDEUSINGNAMESPACESTDCLASSSINXDOUBLEDEGREE/角度DOUBLEVALUE/正弦值PUBLICSINXDOUBLE0VOIDDISPLAYVOIDDATAINPUTDOUBLEDEGBOOLOPERATORVOIDLISTSHOWTELEMENTS,INTSUBSCINTIFORI0IVOIDORDINSERTTFORI0IIJELEMENTSJ1ELEMENTSJELEMENTSIELEMTEMPLATEINTREADFILECHARFILENAME,TELEMENTS/文件写入链表,返回最大下标INTK1TTEMPIFSTREAMDATAFILEDATAFILEOPENFILENAME,IOSBINARY|IOSINWHILEDATAFILEEOFDATAFILEREADCHARIFDATAFILEEOF0/读到无数据可读后,即读入不成功,EOFBIT为1KORDINSERTTEMP,ELEMENTS,KDATAFILECLOSERETURNKTEMPLATEVOIDWRITEFILECHARFILENAME,TELEMENTS,INTSUBSCINTIOFSTREAMDATAFILEDATAFILEOPENFILENAME,IOSBINARY|IOSOUTFORI0IVOIDMERGECHARFILENAME1,CHARFILENAME2,CHARFILENAMEFSTREAMSDATAFILE1FILENAME1,IOSOUT|IOSIN|IOSBINARYFSTREAMSDATAFILE2FILENAME2,IOSOUT|IOSIN|IOSBINARYFSTREAMDDATAFILEFILENAME,IOSOUT|IOSBINARYINTI0,J0,K0,NS1,NS2TTEMPS1,TEMPS2WHILESDATAFILE1EOF0/求文件所含数据数量SDATAFILE1READCHARINS1I1WHILESDATAFILE2EOF0SDATAFILE2READCHARJNS2J1SDATAFILE1CLEAR0SDATAFILE2CLEAR0I0J0SDATAFILE1SEEKG0,IOSBEGSDATAFILE2SEEKG0,IOSBEGSDATAFILE1READCHAR/此方法与用成员函数完全相同SDATAFILE2READCHAR/对于类对象,读和写及大小均仅指数据成员WHILEI“MYDATA1“,“MYDATA2“,“MYDATA“/按题意要求两个文件归并直接使用文件COUTINCLUDEINCLUDEINCLUDEUSINGNAMESPACESTDCLASSSTUDENTINTID/学号STRINGNAME/姓名CHARSEX/性别INTAGE/年龄STRINGADDRESS/家庭地址FLOATENG,PHY,MATH,ELECTRON/英语,物理,数学和电子学成绩PUBLICSTUDENTINT0,STRING“,CHAR,INT0,STRING“,FLOAT0,FLOAT0,FLOAT0,FLOAT0VOIDBDATATOFILEFSTREAM/数据写入文件流类VOIDBDATAFROMFILEFSTREAM/由文件流类读出数据BOOLOPERATORISTREAM/重载提取运算符STUDENTSTUDENTINTI,STRINGN,CHARS,INTA,STRINGADD,FLOATEN,FLOATPH,FLOATMA,FLOATELEIDINAMENSEXSAGEAADDRESSADDENGENPHYPHMATHMAELECTRONELEVOIDSTUDENTBDATATOFILEFSTREAMDESTWRITENAMEC_STR,20/由STRING类的C_STR函数转为CHARDESTWRITECHARDESTWRITECHARDESTWRITEADDRESSC_STR,20/由STRING类的C_STR函数转为CHARDESTWRITECHARDESTWRITECHARDESTWRITECHARDESTWRITECHARVOIDSTUDENTBDATAFROMFILEFSTREAMSOURREADCHARSOURREADDESC,20/必须由字符数组过渡NAMEDESCSOURREADCHARSOURREADCHARSOURREADDESC,20/必须由字符数组过渡ADDRESSDESCSOURREADCHARSOURREADCHARSOURREADCHARSOURREADCHAR/由此可见读和写是完全对称的过程,次序决不能错OSTREAMCOUTSTNAMECOUTSTSEXCOUTSTAGEC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿物基绝热材料的研发考核试卷
- 环境设计毕设答辩
- 呼吸机转运病人操作规范与流程
- 喉软化病人麻醉管理
- 人体的营养和呼吸
- 睡眠呼吸暂停低通气综合症
- 新青年麻醉学科核心课程体系建设
- 手卫生依从性监测数据解读
- 自然语言及语音处理项目式教程 习题库 02-多选题
- 供应链金融创新应用2025:中小微企业融资新策略解析
- 外研版高一英语必修一重点总结
- 腰椎间盘突出症的诊断、鉴别诊断与分型
- 02 微电子制造装备概述
- 价值流图析VSM(美的资料)
- 手足口病培训课件(ppt)
- LD型单梁起重机使用说明书
- 测试案例附录DTX1800使用
- 实习生推荐信
- 关于德国能源转型的十二个见解
- 内蒙古自治区公路工程施工企业信用评价管理实施细则
- 在全市文物保护员培训班上的讲话
评论
0/150
提交评论