1、国家二级 C+机试(C+流)模拟试卷 7 及答案解析(总分:44.00,做题时间:90 分钟)一、选择题(总题数:22,分数:44.00)1.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“left”,输出效果将发生变化的是( )。(分数:2.00)A.coutleftsetfill(*)357;B.coutleftsetw(5)357;C.coutleftsetw(5)“ABCDE“;D.coutleft“ABCDE“;2.假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是( )。(分数:2.00)A.coutsetfill(*)123setw(
2、9)321;B.coutsetfill(*)setw(6)left123setw(6)right321;C.cout123setfill(*)setw(6)321;D.coutsetfill(*)setw(9)left123321;3.有如下程序: # inc1ude iostream #inc1ude iomanip using namespace std; int main() int s=123, 234; coutrightsetfill(*)setw(6); for(int l=0; 12; 1+) coutsiend1; return 0: 运行时的输出结果是( )。(分数:2.0
3、0)A.123 234B.*123 234C.*123 *234D.*123 234*4.下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。(分数:2.00)A.setprecisionB.setwC.setfillD.showpoint5.有如下程序: #inc1ude iostream #inc1ude iomanip using namespace std; int main() coutsetw(10)setfill(x)setprecision(8)left; cout123456793_98765; return 0; 若程序的输出是12345679x98765xxxx
4、x,则划线处缺失的部分是( )。(分数:2.00)A.setw(10)B.setfill(x)C.setprecision(8)D.right6.下列语句都是程序运行时的第 1 条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。(分数:2.00)A.coutinternal12345;B.coutleft12345;C.coutright12345;D.coutsetw(6)12345;7.有如下程序: #inc1ude iomanip #inc1ude iostream using namespace std; int main() coutsetfill(*)setw(
5、6)123456; return 0; 运行时的输出结果是( )。(分数:2.00)A.*123*456B.*123456*C.*123456D.1234568.下列控制对齐方式的操作符中,错误的是( )。(分数:2.00)A.intemalB.centerC.leftD.right9.有如下程序: #inc1udeiostream #inc1udeiomanip using namespace std; int main() coutsetfill(#)setw(4)“OKf123end1; return (); 运行这个程序的输出结果是( )。(分数:2.00)A.#OK123B.#OK#
6、123C.OK#123D.OK#123#10.若磁盘上已存在某个文本文件,其全路径文件名为 d:/ncre/testtxt,下列语句中不能打开该文件的是( )。(分数:2.00)A.ifstream file(“d:/ncre/testtxt“);B.ifstream file(“d:/ncre/testtxt“);C.ifstream file; fileopen(“d:/ncre/testtxt“); ifstream(“d:/ncre/testtxt“);D.ifstream* pFile=new11.语句 ofstreamf(“SALARYDAT“,ios base:app);的功能是
7、建立流对象 f,并试图打开文件 SALARYDAT与 f 关联,而且( )。(分数:2.00)A.若文件存在,将其置为空文件;若文件不存在,打开失败B.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D.若文件存在,打开失败;若文件不存在,建立一个新文件12.如下函数的作用是以双倍行距输出文件: void double_space(ifstreamC.ifstream fin; finopen(“filedat“);D.ifstream *fin=new ifstream(); finopen(“filedat“);
8、16.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios_base:inB.ios_base:in lios_base:outC.ios_base:outD.ios_base:in finopen(“d:/testtxt“,ios_base:in);B.fstream fio; fioopen(“d:/testtxt“,ios_base:out);C.ofstream fout; foutopen(“d:/testtxt“,ios_base:out);D.ofstream fout; foutopen(“d:/testtx
9、t“,ios_base:app);21.如需要向一个二进制文件尾部添加数据,则该文件的打开方式为( )。(分数:2.00)A.ios_base:appB.ios_base:binary|ios_base:outC.ios_base:outD.ios_base:binary|ios_base:app22.有如下语句序列: ifstream infile(“DATADAT“); if(infilegood()cout“A“; else COUt“B“; ofstream outfile(“DATADAT“); if(outfilefail()cout“C“;else cout“D“; 若执行这个语
10、句序列显示的是 BD,则说明文件 DATADAT( )。(分数:2.00)A.以读方式打开成功B.以读方式打开失败,但以写方式打开成功C.以读方式打开失败,以写方式打开也失败D.以读方式打开成功,以写方式打开也成功国家二级 C+机试(C+流)模拟试卷 7 答案解析(总分:44.00,做题时间:90 分钟)一、选择题(总题数:22,分数:44.00)1.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“left”,输出效果将发生变化的是( )。(分数:2.00)A.coutleftsetfill(*)357;B.coutleftsetw(5)357; C.coutleftsetw(5)
11、“ABCDE“;D.coutleft“ABCDE“;解析:解析:此题考查的是 C+流。ssetfill()作用是设置填充字符;left 是使输出数据在指定宽度内左对齐:setw()的作用是设置输入输出宽度,且只对当前一次有效。2.假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是( )。(分数:2.00)A.coutsetfill(*)123setw(9)321;B.coutsetfill(*)setw(6)left123setw(6)right321; C.cout123setfill(*)setw(6)321;D.coutsetfill(*)setw(9)
12、left123321;解析:解析:按照选项 B 的输出格式控制符输出的结果为“l23*32l”,而按照选项 A)、C)、D)的输出格式控制符输出的结果为“123*321”。3.有如下程序: # inc1ude iostream #inc1ude iomanip using namespace std; int main() int s=123, 234; coutrightsetfill(*)setw(6); for(int l=0; 12; 1+) coutsiend1; return 0: 运行时的输出结果是( )。(分数:2.00)A.123 234B.*123 234 C.*123 *
13、234D.*123 234*解析:解析:在输出语句中定义了输出的格式是字符宽度为 6,并且向右对齐,不足的位用补齐。在 C+中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度殴置自动恢复为 0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组 s0中的元素时,按照规定的格式输出,其结果为123,当输出 s1时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。4.下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。(分数:2.00)A.setprecision B.setwC.setfillD.showpoint解析:解析:setpreci
14、sion(int n):设置浮点数的精度(有效位数或小数位数),等价函数调用:ioprecision(n)。5.有如下程序: #inc1ude iostream #inc1ude iomanip using namespace std; int main() coutsetw(10)setfill(x)setprecision(8)left; cout123456793_98765; return 0; 若程序的输出是12345679x98765xxxxx,则划线处缺失的部分是( )。(分数:2.00)A.setw(10) B.setfill(x)C.setprecision(8)D.righ
15、t解析:解析:根据程序输出的结果最后 5 个位置用 x 进行填充,又因为 setw(10)设置输出的宽度效果只对一次输出有效。所以划线处应该填写 setw(10)。6.下列语句都是程序运行时的第 1 条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。(分数:2.00)A.coutinternal12345;B.coutleft12345;C.coutright12345;D.coutsetw(6)12345; 解析:解析:选项 A),B),C)都没有指输出数据的宽度,所以在输出时,按实际字符的宽度输出,而选项 D)指定输出字符的宽度为 6,而实际输出的宽度等于 5,所以最后
16、一个字符用空格补齐。7.有如下程序: #inc1ude iomanip #inc1ude iostream using namespace std; int main() coutsetfill(*)setw(6)123456; return 0; 运行时的输出结果是( )。(分数:2.00)A.*123*456B.*123456*C.*123456 D.123456解析:解析:在主函数中第一次输出时调用函数 setfill(*)设置填充字符为*,调用函数 setw(6)设置每次输出的宽度为 6,所以第一次输出 123 时,多余的三个空位用*填充,即结果为*123,第二次从输出流中输出 456
17、。8.下列控制对齐方式的操作符中,错误的是( )。(分数:2.00)A.intemalB.center C.leftD.right解析:解析:对齐方式的控制操作符 left 的含义是在设定的宽度内左对齐输出,右端填已设定的填充字符;right(此为默认设置)在设定的宽度内右对齐输出;intemal 在设定的宽度内右对齐输出,但若有符号(一或+),符号置于最左端。9.有如下程序: #inc1udeiostream #inc1udeiomanip using namespace std; int main() coutsetfill(#)setw(4)“OKf123end1; return ();
18、 运行这个程序的输出结果是( )。(分数:2.00)A.#OK123 B.#OK#123C.OK#123D.OK#123#解析:解析:setfill 是设置填充字符,setw 设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以 coutsetfill(#)seM(4)“OK“123 中,setfill 和 setw只作用在“OK“,表示在“OK“前面填充 2 个#。10.若磁盘上已存在某个文本文件,其全路径文件名为 d:/ncre/testtxt,下列语句中不能打开该文件的是( )。(分数:2.00)A.ifstream file(“d:/ncre/testtx
19、t“); B.ifstream file(“d:/ncre/testtxt“);C.ifstream file; fileopen(“d:/ncre/testtxt“); ifstream(“d:/ncre/testtxt“);D.ifstream* pFile=new解析:解析:此题考查的是转义字符。在字符常量或字符串中,以“”开头的一系列字符被看做是一个转义字符。要表示“”字符,必须使用转义字符“”。11.语句 ofstreamf(“SALARYDAT“,ios base:app);的功能是建立流对象 f,并试图打开文件 SALARYDAT与 f 关联,而且( )。(分数:2.00)A.若
20、文件存在,将其置为空文件;若文件不存在,打开失败B.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析:此题考查的是文件打开模式。文件打开模式 iso_base:app 是为添加数据而打开(总是在尾部写),故只有选项 B 说法正确。12.如下函数的作用是以双倍行距输出文件: void double_space(ifstreamC.ifstream fin; finopen(“filedat“);D.ifstream *fin=new ifstream()
21、; finopen(“filedat“);解析:解析:在选项 A 中,在赋值号的左侧表示建立一个输入流对象 fin,而在赋值号的右侧的表达式不正确,因为文件输入流类 ifstream 不能直接调用其成员函数 open。16.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios_base:in B.ios_base:in lios_base:outC.ios_base:outD.ios_base:in finopen(“d:/testtxt“,ios_base:in); B.fstream fio; fioopen(“d:/t
22、esttxt“,ios_base:out);C.ofstream fout; foutopen(“d:/testtxt“,ios_base:out);D.ofstream fout; foutopen(“d:/testtxt“,ios_base:app);解析:解析:如果以 iso base:in 模式打开文件但文件又不存在时,可以通过 failo 测出文件打开失败,不会自动创建文件。21.如需要向一个二进制文件尾部添加数据,则该文件的打开方式为( )。(分数:2.00)A.ios_base:appB.ios_base:binary|ios_base:outC.ios_base:outD.io
23、s_base:binary|ios_base:app 解析:解析:ios base:binary 模式是作为二进制文件打开,ios_base:app 模式是作为添加数据而打开(总是在尾部写)。22.有如下语句序列: ifstream infile(“DATADAT“); if(infilegood()cout“A“; else COUt“B“; ofstream outfile(“DATADAT“); if(outfilefail()cout“C“;else cout“D“; 若执行这个语句序列显示的是 BD,则说明文件 DATADAT( )。(分数:2.00)A.以读方式打开成功B.以读方式打开失败,但以写方式打开成功 C.以读方式打开失败,以写方式打开也失败D.以读方式打开成功,以写方式打开也成功解析:解析:由这个语句序列显示的结果是 BD,说明执行了 cout“B“和 cout“D“语句。