第九章答案文件.doc_第1页
第九章答案文件.doc_第2页
第九章答案文件.doc_第3页
第九章答案文件.doc_第4页
第九章答案文件.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

93 练习题解答 1在C+的输入输出操作中,“流”的概念如何理解?从流的角度说明什么是提取操作?什么是插入操作? 答:C+语言将输入信息和输出信息都看作为信息流,或者是字符流,或者是二进制码流,因此,称为输人流和输出流。输人流是输入的信息流,输出流是输出的信息流。 从“流”的角度来讲,提取操作是从输入信息流中读取信息,将它存放在机器中;插入操作是向输出信息流中加入信息,将它流向某个指定的设备或文件中去。 2系统预定义的流类对象中,cin和cout的功能是什么? 答:cin是istream类的对象,它表示标准输入流对象,即键盘输入。 cout是ostream类的对象,它表示标准输出流对象,即显示屏幕输出。 3屏幕输出一个字符串有哪些方法?屏幕输出一个字符有哪些方法? 答:屏幕输出一个字符串通常使用下述方法。 (1)标准输出流对象cout和插入运算符。例如, cout ”output a string! n”; (2)使用成员函数write()输出一个字符串。例如, cout.write(”string”,strlen(”string”); 屏幕输出一个字符通常也有两种方法。(1) 使用cout和插入运算符。(2) 例如。 couta,bendl; (2)使用成员函数put()输出一个字符。例如, cout.put(a“)。put(,)put(b)put (n); 4键盘输入一个字符串有哪些方法?键盘输入一个字符有哪些方法? 答:键盘输入一个字符串通常使用下述方法: (1)使用标准输入流对象cin和提取符。 例如 cinab; (2)使用成员函数read()输入一个字符串。 例如 char s80=” cinread(s,80); (3)使用成员函数getline()输入一行字符串。 例如 char buf80; cingetline(buf,80)5 键盘输入一个字符通常用下述两种方法。 (1)使用cin和提取符。 例如 Char cl,c2; cinclc2; (2)使用成员函数get()输入一个字符。 例如 Char c ; cinget(c); 5如何输出一个int型数值量的不同进位制? 答:输出一个int型数值量的不同进制,可采用下述方法。 例如 int a123: 输出a的十进制数值: coutdecaendl: 默认为十进制。 输出a的八进制数值 coutoctaendl; 输出a的十六进制数值 couthexaendl: 6如何输出一个浮点数的不同精度? 答:设置浮点数的精度有两种方法。 (1)使用成员函数precision()设置浮点数有效数字的位数。 例如 cout.precision(8); 表明输出浮点数的有效数字位数为8位,不足8位后补0,超过8位四舍五人取8位。 (2)使用操作子set spreci sion(int)设置浮点数精度。 例如 coutsetsprecision(8)1.23456789),可以从打开的文件中读取各种类型的数据。(2)使用输入流对象和成员函数get()。每次从打开的文件中读取一个字符。(3)使用输入流对象和成员函数read(),可以从打开的文件中提取一个字符串。11如何确定文件的读指针或写指针的位置?如何改变读指针或写指针的位置?答:c+语言提供了随机访问数据文件的相关操作。由这些操作可以改变读指针和写指针的位置,从而实现随机读写的目地.一个文件被打开后,由于打开方式不同,读,写指针位置也不同,通常是在文件首,有时。例如按追加写打开时,写指针会出现在文件民, iostream类提供3个用来改变读指针位置的成数函数c 它们是 istrcam istrcam:seekg(流中位置 istream istrcam:seekg (偏移量,参照位置 ;streampos istream:tellg();其中,和都是long型量,以字节数为单位。含意如下所示。 cur1 相对当前读指针所指定的位置 beg0 相对于流的开始位置 end2 相对于流的结尾处 streampos 被定义为long型量。 例如 inputseekg(l00,ios:end); 表示使读指针相对文件流尾处前移loo个字节。 成员函数tellg()将返回当前读指针相对于流开始处的字节数。 同样,ostream类中提供了如下3个关于写指针操作的成员函数。 ostream &ostream:seekp(流中位置); ostream &ostream:seekp(偏移量,参照位置; streampos ostream:tellp(); 具体解释同上。 l 2流的错误状态如何处理? 答:在ios类中,定义一个用来记录错误信息的数据成员,称为状态字。该状态字的各位是用不同的错误状态来描述的。 例如 eofbitOx01 表示到达文件尾 failbitOx02 表示IO操作失败 等等。 在ios类中又定义了检测流状态字的各种成员函数。 例如 int eof() 该函数返回非零值表示已到文件尾 int fail() 如果faiIbit位被设置,该函数返回非零值。 等等。 利用上述成员函数检测流的错误状态,并进行处理。 94 作业题解答 一、选择填空 1进行文件操作时需要包含( )文件。 A:iostreamh Bfstreamh C stdioh Dstdlibh 答: B。 2使用操作子对数据进行格式输出时,应包含( )文件。 A iostreamh B fstreamh C。 iomaniph D stdlibh 答:C。 3已知:int a,*pa&a;输出指针pa十进制的地址值的方法是( )。 A coutpa B cout*pa Ccout&pa Dcoutlong(&pa) 答:D。 4下列输出字符A的方法中,( )是错误的。 Acoutput(A) BcoutA C coutput(A) D char AA;coutA 答:A。 5关于getline()函数的下列描述中,( )是错的。 A该函数是用来从键盘上读取字符串的 B该函数读取的字符串长度是受限制的 C该函数读取字符串时遇到终止符便停止 D该函数中所使用的终止符只能是换行符 答:D。 6关于read()函数的下列描述中,( )是对的。 A该函数只能从键盘输人中获取字符串 B该函数所获取的字符多少是不受限制的 C该函数只能用于文本文件的操作中 D该函数只能按规定读取所指定的字符数 答:B。 7在ios中提供控制格式的标志位中,( )是转换为十六进制形式的标志位。 A hex B oct C dcc D。1eft 答:A。 8控制格式输出输入的操作子中,( )是设置域宽的。 Aws Boct Csetfill() D,setw() 答:D。 9磁盘文件操作中,打开磁盘文件的访问方式常量中,( )是以追加方式打开文件的。 A in B out C app D ate 答:C。 10下列函数中,( )是对文件进行写操作的。 Aget() Bread() Cseekg() Dput() 答:D。 二、判断下列描述的正确性,对者划,错者划 1使用提取符()可以输出各种基本数据类型的变量的值,也可以输出指针值。 2预定义的插入符从键盘上接收数据是不带缓冲区的。 3预定义的提取符和插入符是可以重载的。 4记录流的当前格式化状态的标志字中每一位用于记录一种格式,这种格式是不能被设置或清除的。 5设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout。 6操作子本身是一个对象,它可以直接被提取符或插入符操作。 7get()函数不能从流中提取终止字符,终止字符仍留在流中。getline()函数可以从流中提取终止字符,但终止字被丢弃。 8ios类的成员函数clear()是用来清除整个屏幕的。 9使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象。 10使用关闭文件函数close()关闭一个文件时,但流对象仍存在。 11以app方式打开文件时,当前的读指针和写指针都定位于文件尾。 12打开ASCII码流文件和二进制流文件时,打开方式是相同的。 13read()和write()函数可以读写文本文件,也可以读写二进制文件。 14流的状态包含流的内容、长度和下一次提取或插入操作的当前位置。 15seekg()函数和seekp()函数分别用来定位读指针和写指针的。如果使用 seek()函数可以同时定义读写指针。 三、分析下列程序的输出结果 1 #includeiostreamh #includefstreamh #includestdlibh void main( )fstream outfile,infile; outfile.open(“text.dat”,ios:out);if(!outfile)cout”text.dat cant open.n”;abort();outfile”123456789n”;outfile”aaabbbbbbbbcccn”dddddfffeeeeggggghhhn”;outfile”okn”;outfile.close();infile.open(”tcxtdat”,ios:in);if(!infile)cout”file cant open.n”;abort(); char textline80;While(!infileeof() infilegctline(textline,sizeof(textline); couttextlineendl; 运行该程序输出如下结果。 1 2 3 4 5 6 7 8 9 a a a b b b b b b b c c c d d d d d f f f c c c c g g g g g h h h o k! 分析: 该程序中先打开文件textdat,打开方式是写,判断打开成功后,向该文件中输入行字符串。然后,将该文件关闭。 接着,以读方式打开textdat文件,判断成功后,将通过while循环语句。逐行读:textdat文件中的内容,并输出显示在屏幕上。 这里,使用了打开、关闭文件的操作以及对打开文件的读、写操作。 2 #includeiostreamh #includefstreamh#includevoid main()fstream file1;file1.open(“text1.dat”,ios:out|ios:in);if(!filel)cout”text1.dat cant open.n”;abort();char textline=”123456789abcdefghijkl.n”;for(int i=0 ; i #includestrstrea.hchar a=”1000”;void main()int dval,oval,hval;istrstream iss(a,sizeof(a);issdecoctoval;iss.seekg(ios:beg);isshexhval;cout”decVal:”dvalendl;cout”otcVal:”ovalendl;cout”hexVal:”hvalendl;运行该程序输出显示结果如下所示。 decVal:1000 otcval:5l 2 hexval:4096 分析: 程序中定义一个istrstrea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论