1、国家二级 C+机试(C+流)模拟试卷 6 及答案解析(总分:44.00,做题时间:90 分钟)一、选择题(总题数:22,分数:44.00)1.下列关于 C+流的说明中,正确的是( )。(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin 是一个预定义的输入流类D.输出流有一个名为 open 的成员函数,其作用是生成一个新的流对象2.在语句 cindata;中,cin 是( )。(分数:2.00)A.C+的关键字B.类名C.对象名D.函数名3.如果利用 C+流进行输入输出,下面的叙述中正确的
2、是( )。(分数:2.00)A.只能借助于流对象进行输入输出B.只能进行格式化输入输出C.只能借助于 cin 和 cout 进行输入输出D.只能使用运算符和进行输入输出4.下列有关 C+流的叙述中,错误的是( )。(分数:2.00)A.C+操作符 setw 设置的输出宽度永久有效B.C+操作符 end1 可以实现输出的回车换行C.处理文件 I/O 时,要包含头文件 fstreamD.进行输入操作时,eof()函数用于检测是否到达文件尾5.在语句“coutA;”中,cout 是( )。(分数:2.00)A.类名B.对象名C.函数名D.C+的关键字6.下列关于 C+流的描述中,错误的是( )。(分
3、数:2.00)A.coutA表达式可输出字符 AB.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件7.在 C+中,cin 是一个( )。(分数:2.00)A.类B.对象C.模板D.函数8.下列关于 C+预定义流对象的叙述中,正确的是( )。(分数:2.00)A.cin 是 C+预定义的标准输入流对象B.cin 是 C+预定义的标准输入流类C.cout 是 C+预定义的标准输入流对象D.cout 是 C+预定义的标准输入流类9.C+系统预定了 4 个用于标准数据流的对象,
4、下列选项中不属于此类对象的是( )。(分数:2.00)A.coutB.cinC.cerrD.cset10.要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是( )。(分数:2.00)A.fstreamB.istrearaC.usireamD.iomanip11.在 C+中,打开一个文件时与该文件建立联系的是( )。(分数:2.00)A.流对象B.模板C.函数D.类12.下列关于输入输出流的叙述中,正确的是( )。(分数:2.00)A.一个文件流可以与一个数据文件相联系B.cin 是专门从键盘输入数据的输入流类C.流运算符用来从输入流中读取数据D.宽度设置的效果永久有效13.在
5、 C+中既可以用于文件输入又可以用于文件输出的流类是( )。(分数:2.00)A.fstreamB.ifstreamC.ofstreamD.iostream14.对于语句 coutendx;中的各个组成部分,下列叙述中错误的是( )。(分数:2.00)A.cout 是一个输出流对象B.end1 的作用是输出回车换行C.x 是一个变量D.称作提取运算符15.有如下程序: #inc1udeiostream using namespace std; int main() coutfill(*); coutwidth(6); coutfill(#); cout123end1; retum 0; 执行后
6、的输出结果是( )。(分数:2.00)A.#123B.123#C.*123D.123*16.下面关于 C+流的叙述中,正确的是( )。(分数:2.00)A.cin 是一个输入流对象B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“;couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cingetline(x,80);时,若键入 Happy new year 则 x 中的字符串是“Happy“17.有如下程序: #inc1udeiostream #inc1udeiomanip using namespace std; int
7、main() coutfill(*); cnutleftsetw(4)123“OK“end1; return (); 执行这个程序的输出结果是( )。(分数:2.00)A.123*OKB.123*OK*C.*123OKD.*123*OK18.下列关于输入流类成员函数 getline()的描述中,错误的是( )。(分数:2.00)A.该函数是用来读取键盘输入的字符串的B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符便停止D.该函数读取字符串时,可以包含空格19.有如下程序 #inc1udeiostream #inc1udeiomanip using namespace st
8、d; int main() coutsetprecision(3)fixedsetfill(*)setw(8); cout1234534567; return 0; 若程序的输出是: *12345*34567 则程序中下划线处遗漏的操作符是( )。(分数:2.00)A.setprecision(3)B.fixedC.setfill(*)D.setw(8)20.使用输入输出操作符 setw,可以控制( )。(分数:2.00)A.输出精度B.输出宽度C.对齐方式D.填充字符21.已知一程序运行后执行的第一个输出操作是 coutsetw(10)setfill(*)1234; 则此操作的输出结果是(
9、)。(分数:2.00)A.1234B.*1234C.*1234D.1234*22.有如下 4 个语句:coutAsetfill(*)leftsetw(7)Bend1;coutsetfill(*)leftsetw(7)ABend1;coutAserfll(*)rightsetw(7)Bend1;coutsetfill(*)rightsetw(7)ABend1;其中能显示A*B 的是( )。(分数:2.00)A.和B.和C.和D.和国家二级 C+机试(C+流)模拟试卷 6 答案解析(总分:44.00,做题时间:90 分钟)一、选择题(总题数:22,分数:44.00)1.下列关于 C+流的说明中,正
10、确的是( )。(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现 B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin 是一个预定义的输入流类D.输出流有一个名为 open 的成员函数,其作用是生成一个新的流对象解析:解析:此题考查的是 C+流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项 B 错误;cin 是一个预定义的输入流对象而不是流类,故选项 C 错误;输入输出流中没有 open 成员函数,故选项 D 错误。2.在语句 cindata;中,cin 是( )。(分数:2.00)A.C+的关键
11、字B.类名C.对象名 D.函数名解析:解析:此题考查的是预定义流对象。C+有 4 个预定义的流对象:cin标准输入;cout标准输出;cerr标准出错信息输出:clog带缓冲的标准出错信息输出。3.如果利用 C+流进行输入输出,下面的叙述中正确的是( )。(分数:2.00)A.只能借助于流对象进行输入输出 B.只能进行格式化输入输出C.只能借助于 cin 和 cout 进行输入输出D.只能使用运算符和进行输入输出解析:解析:此题考查的知识点是 C+流。利用 C+流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项 B 错误;C+的 4 个预定义的流对象为:cin标准输入,cout标准
12、输出,cerr标准出错信息输出,clog带缓冲的标准出错信息输出,选项 C 错误;C+流除了可以使用提取“”插入“”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,故选项 D 错误。4.下列有关 C+流的叙述中,错误的是( )。(分数:2.00)A.C+操作符 setw 设置的输出宽度永久有效 B.C+操作符 end1 可以实现输出的回车换行C.处理文件 I/O 时,要包含头文件 fstreamD.进行输入操作时,eof()函数用于检测是否到达文件尾解析:解析:此题考查的是 C+流。C+操作符 setw0 的作用是设置输入输出宽度,且只对当前一次有效,并非永久有效,故选项 A 叙述
13、错误。5.在语句“coutA;”中,cout 是( )。(分数:2.00)A.类名B.对象名 C.函数名D.C+的关键字解析:解析:C+有四个预定义的流对象:cin 标准输cout 标准输出,cerr 标准出错信息输出,clog 带缓冲的标准出错信息输出。6.下列关于 C+流的描述中,错误的是( )。(分数:2.00)A.coutA表达式可输出字符 A B.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件解析:解析:Cout 是一个标准输出流对象。称之为提取运算符,它的功
14、能是从输入流中提取数据赋值给一个变量。为插入运算符,其功能是把表达式的值插入到输出流中。当系统执行 coutx 操作时,首先根据 x 值的类型调用相应的插入运算符重载器函数,把 x 的值传送给对应的形参,接着执行函数体,把 x 的值输出到显示器屏幕上,在当前屏幕光标位置处显示出来,然后返回 ostream 流,以便继续使用插入运算符输出下一个表达式的值。对于本题来说,要输出字符A的值应该写成 coutA,因而选项 A)是错误的。7.在 C+中,cin 是一个( )。(分数:2.00)A.类B.对象 C.模板D.函数解析:解析:Cin 为 istream 流类的对象。8.下列关于 C+预定义流对
15、象的叙述中,正确的是( )。(分数:2.00)A.cin 是 C+预定义的标准输入流对象 B.cin 是 C+预定义的标准输入流类C.cout 是 C+预定义的标准输入流对象D.cout 是 C+预定义的标准输入流类解析:解析:Cin 为 istream 流类的标准输入对象,标准输入设备就是指键盘。9.C+系统预定了 4 个用于标准数据流的对象,下列选项中不属于此类对象的是( )。(分数:2.00)A.coutB.cinC.cerrD.cset 解析:解析:C+流有 4 个预定义的流对象,它们分别是:cin 标准输入;cout 标准输出;cerr 标准出错信息输出:clog 带缓冲的标准出错信
16、息输出。10.要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是( )。(分数:2.00)A.fstreamB.istrearaC.usireamD.iomanip 解析:解析:要使用 setw、fixed 等操作符,须包含 iomanip 这个文件。11.在 C+中,打开一个文件时与该文件建立联系的是( )。(分数:2.00)A.流对象 B.模板C.函数D.类解析:解析:在 C+中,打开一个文件时与该文件建立联系的是流对象。12.下列关于输入输出流的叙述中,正确的是( )。(分数:2.00)A.一个文件流可以与一个数据文件相联系 B.cin 是专门从键盘输入数据的输入流类C
17、.流运算符用来从输入流中读取数据D.宽度设置的效果永久有效解析:解析:当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的流对象,另一个是文件对象。程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。13.在 C+中既可以用于文件输入又可以用于文件输出的流类是( )。(分数:2.00)A.fstream B.ifstreamC.ofstreamD.iostream解析:解析:文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。ifstream是文件输入流类,ofstream 是文件输出流类,fst
18、ream 是文件输入输出流类,当使用 cin、cout 的预定义流对象进行针对标准设备的 I/O 操作,则需要使用 iostream 文件。14.对于语句 coutendx;中的各个组成部分,下列叙述中错误的是( )。(分数:2.00)A.cout 是一个输出流对象B.end1 的作用是输出回车换行C.x 是一个变量D.称作提取运算符 解析:解析:此题考查的是 C+语言的输出流。符号“”是预定义插入符,提取运算符是“”。15.有如下程序: #inc1udeiostream using namespace std; int main() coutfill(*); coutwidth(6); co
19、utfill(#); cout123end1; retum 0; 执行后的输出结果是( )。(分数:2.00)A.#123 B.123#C.*123D.123*解析:解析:此题考查的是 I/O 格式化输出。函数 width(int n)设置输入输出宽度,当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据宽度大于设置的宽度时,仍按实际宽度输出;函数 fill(charc)用来设置填充字符。16.下面关于 C+流的叙述中,正确的是( )。(分数:2.00)A.cin 是一个输入流对象 B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“;
20、couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cingetline(x,80);时,若键入 Happy new year 则 x 中的字符串是“Happy“解析:解析:此题考查的是 C+流的概念和 I/O 的格式化。cin 是类的对象,亦即输入流对象;ifstream是输入文件流类,不能定义一个输出流对象:C 选项中最后输出的是字符串“PQMN”;D 选项中 x 中字符串应该是“Happy new year”。17.有如下程序: #inc1udeiostream #inc1udeiomanip using namespace std; int main() co
21、utfill(*); cnutleftsetw(4)123“OK“end1; return (); 执行这个程序的输出结果是( )。(分数:2.00)A.123*OK B.123*OK*C.*123OKD.*123*OK解析:解析:此题考查了输出流的格式控制。cout 的 fill()是设置填充字符;left 和 end1 分别是使输出数据左对齐和换行:setw()函数的作用是设置输入输出的宽度,此设置效果只对以此输入或输出有效。此题中,输出整数 123 时宽度为 4 且左对齐,得到“123*”;输出字符串“OK”时宽度没有定义实际大小输出,结果得到 OK;故最后得到的输出结果是 123*OK
22、。18.下列关于输入流类成员函数 getline()的描述中,错误的是( )。(分数:2.00)A.该函数是用来读取键盘输入的字符串的 B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符便停止D.该函数读取字符串时,可以包含空格解析:解析:此题考查的是 getline()函数。getline()函数的原型为:istream_ t)rpe。其功能是从当前输入位置开始提取字符存入 s 所指向的具有 n 个字节的字符空间中。遇到以下情况时停止:已提取并存储了 n1 个字符;到流尾,无字符可取;下一个要提取的字符等于结束标志字符 delim。故选项 B、C、D 都是正确的。getl
23、ine()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选项 A 错误。19.有如下程序 #inc1udeiostream #inc1udeiomanip using namespace std; int main() coutsetprecision(3)fixedsetfill(*)setw(8); cout1234534567; return 0; 若程序的输出是: *12345*34567 则程序中下划线处遗漏的操作符是( )。(分数:2.00)A.setprecision(3)B.fixedC.setfill(*)D.setw(8) 解析:解析:此题考查的是输出
24、函数的格式控制。此题中,操作符 setprecision 的作用是设置浮点数的精度:fixed 的作用是让浮点数按定点格式输出;setfill 的作用是设置填充字符;setw 的作用是设置输入输出的宽度,一次有效的设置。下划线处应填一个让 34567 的输出宽度为 8 的操作符,即 setw(8)。20.使用输入输出操作符 setw,可以控制( )。(分数:2.00)A.输出精度B.输出宽度 C.对齐方式D.填充字符解析:解析:此题考查的是 C+流的操作符。在 C+流中,操作符 setw 的作用是设置输入输出宽度。21.已知一程序运行后执行的第一个输出操作是 coutsetw(10)setfi
25、ll(*)1234; 则此操作的输出结果是( )。(分数:2.00)A.1234B.*1234 C.*1234D.1234*解析:解析:此题考查的是输入输出的格式控制。setw()控制的是输入输出的宽度;setfill()控制的是输出的填充字符。所以本题的输出结果是*1234。22.有如下 4 个语句:coutAsetfill(*)leftsetw(7)Bend1;coutsetfill(*)leftsetw(7)ABend1;coutAserfll(*)rightsetw(7)Bend1;coutsetfill(*)rightsetw(7)ABend1;其中能显示A*B 的是( )。(分数:2.00)A.和B.和C.和 D.和解析:解析:此题考查 C+流的使用。setfill()作用是设置填充字符;left 是使输出数据在指定宽度内左对齐;right 是使输出数据在指定宽度内右对齐。