第九章答案文件

更新时间:2023-09-30 15:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

9.3 练习题解答

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)例如。

cout<<’a’<<’,’<<’b’<<endl; (2)使用成员函数put()输出一个字符。例如, cout.put(’a“)。put(’,’).put(‘b’).put (’\n’);

4.键盘输入一个字符串有哪些方法?键盘输入一个字符有哪些方法? 答:键盘输入一个字符串通常使用下述方法: (1)使用标准输入流对象cin和提取符>>。 例如

cin>>a>>b;

(2)使用成员函数read()输入一个字符串。 例如

char s[80]=” \

cin.read(s,80);

(3)使用成员函数getline()输入一行字符串。 例如

char buf[80];

cin.getline(buf,80)5

键盘输入一个字符通常用下述两种方法。 (1)使用cin和提取符>>。 例如

Char cl,c2; cin>>cl>>c2;

(2)使用成员函数get()输入一个字符。 例如

Char c ; cin.get(c);

5.如何输出一个int型数值量的不同进位制?

答:输出一个int型数值量的不同进制,可采用下述方法。 例如

int a=123:

输出a的十进制数值:

cout<<dec<<a<<endl: 默认为十进制。 输出a的八进制数值

cout<<oct<<a<<endl; 输出a的十六进制数值

cout<<hex<<a<<endl:

6.如何输出一个浮点数的不同精度? 答:设置浮点数的精度有两种方法。

(1)使用成员函数precision()设置浮点数有效数字的位数。 例如

cout.precision(8);

表明输出浮点数的有效数字位数为8位,不足8位后补0,超过8位四舍五人取8位。

(2)使用操作子set spreci sion(int)设置浮点数精度。 例如

cout<<setsprecision(8)<<1.23456789<

答:确定输出数据项宽度的方法如下: (1)使用成员函数width()确定输出宽度。 例如

cout.Width(10):

表明下面输出的数据项最小宽度为10个字符位置,超过后按实际宽度,不足补填充符。输出宽度设置仅用一次。不设置宽度时按默认宽度0,即按实际宽度输出。

(2)使用操作子setw(int)设置输出数据项宽度。 例如

cout<<setw(10)<<l 23456<<endl; 输出结果为 l 23456,其宽度为10。 8.采用什么方法打开和关闭磁盘文件? 答:打开磁盘文件有下述两种方法。

(1)创建fstream类的对象,打开已知文件,需指出打开方式。例如,以写方式打开 xy.txt文件,具体格式如下所示。 fstream output(”xy.txt”,ios::out);

(2)创建ifstream类或ofstream类的对象,只需已知文件名。例如,以读方式打开 xy.txt文件,具体格式如下所示。 ifstrcam input(”xy.txt”);

关闭磁盘文件的方法如下: 使用成员函数close()。 例如

input.close( );

将创建的inPut输入流对象关闭。 9.写磁盘文件时有哪几种方法? 答:写磁盘文件的方法如下。

(1)使用输出流对象和插入符,可向打开的文件中写入各种类型的数据。

(2)使用输出流对象和成员函数put(),每次向文件中写一个字符。

(3)使用输出流对象和成员函数w rite(),可向文件中写入若干个字符。 10.读磁盘文件时有哪几种方法? 答:读磁盘方法如下所示。 (1)使用输入流对象和提取符(>>),可以从打开的文件中读取各种类型的数据。 (2)使用输入流对象和成员函数get()。每次从打开的文件中读取一个字符。 (3)使用输入流对象和成员函数read(),可以从打开的文件中提取一个字符串。

11.如何确定文件的读指针或写指针的位置?如何改变读指针或写指针的位置?

答:c++语言提供了随机访问数据文件的相关操作。由这些操作可以改变读指针和写指针的位置,从而实现随机读写的目地.

一个文件被打开后,由于打开方式不同,读,写指针位置也不同,通常是在文件首,有时。例如.按追加写打开时,写指针会出现在文件民, iostream类提供3个用来改变读指针位置的成数函数c 它们是

istrcam &istrcam::seekg(<流中位置> =

istream &istrcam::seekg (<偏移量>,<参照位置>= ; streampos istream::tellg();

其中,<流中位置>和<偏移量>都是long型量,以字节数为单位。<参照位置>含意如下所示。

cur=1 相对当前读指针所指定的位置 beg=0 相对于流的开始位置 end=2 相对于流的结尾处

streampos 被定义为long型量。 例如

input.seekg(—l00,ios::end);

表示使读指针相对文件流尾处前移loo个字节。

成员函数tellg()将返回当前读指针相对于流开始处的字节数。 同样,ostream类中提供了如下3个关于写指针操作的成员函数。 ostream &ostream::seekp((流中位置>); ostream &ostream::seekp(<偏移量=,<参照位置==; streampos ostream::tellp(); 具体解释同上。

l 2.流的错误状态如何处理?

答:在ios类中,定义一个用来记录错误信息的数据成员,称为状态字。该状态字的各位是用不同的错误状态来描述的。

例如

eofbit=Ox01 表示到达文件尾 failbit=Ox02 表示I/O操作失败 等等。

在ios类中又定义了检测流状态字的各种成员函数。 例如

int eof() 该函数返回非零值表示已到文件尾

int fail() 如果faiIbit位被设置,该函数返回非零值。 等等。

利用上述成员函数检测流的错误状态,并进行处理。

9.4 作业题解答 一、选择填空

1.进行文件操作时需要包含( )文件。

A:iostream.h B.fstream.h C. stdio.h D.stdlib.h 答: B。

2.使用操作子对数据进行格式输出时,应包含( )文件。 A. iostream.h B. fstream.h C。 iomanip.h D. stdlib.h 答:C。

3.已知:int a,*pa=&a;输出指针pa十进制的地址值的方法是( )。 A. cout<<pa B. cout<<*pa C.cout<<&pa D.cout<<long(&pa) 答:D。

4.下列输出字符’A’的方法中,( )是错误的。 A.cout<<put(‘A’) B.cout<<’A’ C. cout.put(‘A’) D. char A=’A’;cout<<A 答: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.控制格式输出输入的操作子中,( )是设置域宽的。

A.ws B.oct C.setfill() D,setw() 答:D。

9.磁盘文件操作中,打开磁盘文件的访问方式常量中,( )是以追加方式打开文件的。

A. in B. out C. app D. ate 答:C。

10.下列函数中,( )是对文件进行写操作的。 A.get() B.read() C.seekg() D.put() 答:D。

二、判断下列描述的正确性,对者划√,错者划×

√1.使用提取符(<<)可以输出各种基本数据类型的变量的值,也可以输出指针值。

×2.预定义的插入符从键盘上接收数据是不带缓冲区的。 √3.预定义的提取符和插入符是可以重载的。

×4.记录流的当前格式化状态的标志字中每一位用于记录一种格式,这种格式是不能被设置或清除的。

√5.设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout。

√6.操作子本身是一个对象,它可以直接被提取符或插入符操作。 √7.get()函数不能从流中提取终止字符,终止字符仍留在流中。getline()函数可以从流中提取终止字符,但终止字被丢弃。

×8.ios类的成员函数clear()是用来清除整个屏幕的。

√9.使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象。

√10.使用关闭文件函数close()关闭一个文件时,但流对象仍存在。 √11.以app方式打开文件时,当前的读指针和写指针都定位于文件尾。 ×12.打开ASCII码流文件和二进制流文件时,打开方式是相同的。

√13.read()和write()函数可以读写文本文件,也可以读写二进制文件。 √14.流的状态包含流的内容、长度和下一次提取或插入操作的当前位置。 ×15.seekg()函数和seekp()函数分别用来定位读指针和写指针的。如果使用 seek()函数可以同时定义读写指针。 三、分析下列程序的输出结果 1

#include<iostream.h> #include<fstream.h> #include<stdlib.h> void main( )

{

fstream outfile,infile;

outfile.open(“text.dat”,ios::out);

if(!outfile) {

cout<<”text.dat can’t open.\\n”; abort();

本文来源:https://www.bwwdw.com/article/wbfd.html

Top