国家二级C++机试(C++流)模拟试卷7
选择题
1.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<<left”,输出效果将发生变化的是( )。(B)
A. cout<<left<<setfill(’*’)<<357;
B. cout<<left<<setw(5)<<357;
C. cout<<left<<setw(5)<<\\
D. cout<<left<<\\
解析:此题考查的是C++流。ssetfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:setw()的作用是设置输入输出宽度,且只对当前一次有效。
2.假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是( )。(B)
A. cout<<setfill(’*’)<<123<<setw(9)<<321;
B. cout<<setfill(’*’)<<setw(6)<<left<<123<<setw(6)<<right<<321;
C. cout<<123<<setfill(’*’)<<setw(6)<<321;
D. cout<<setfill(’*’)<<setw(9)<<left<123<<321;
解析:按照选项B的输出格式控制符输出的结果为“l23******32l”,而按照选项A)、C)、D)的输出格式控制符输出的结果为“123***321”。
3.有如下程序:
# inc1ude <iostream>
#inc1ude <iomanip>
using namespace std;
int main(){
int s[]={123, 234};
cout<<right<<setfill(’*’)<<setw(6);
for(int l=0; 1<2; 1++){ cout<<s[i]<<end1;}
return 0:
}
运行时的输出结果是( )。(B)
A. 123 234
B. ***123 234
C. ***123 ***234
D. ***123 234***
解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘—’补齐。在C++中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度殴置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[0]中的元素时,按照规定的格式输出,其结果为¨—123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。
4.下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。(A)
A. setprecision
B. setw
C. setfill
D. showpoint
解析:setprecision(int n):设置浮点数的精度(有效位数或小数位数),等价函数调用:io.precision(n)。
5.有如下程序:
#inc1ude <iostream>
#inc1ude <iomanip>
using namespace std;
int main(){
cout<<setw(10)<<setfill(’x’)<<setprecision(8)<<left;
cout<<12.3456793<<________<<98765;
return 0;
}
若程序的输出是12.345679x98765xxxxx,则划线处缺失的部分是( )。(A)
A. setw(10)
B. setfill(’x’)
C. setprecision(8)
D. right
解析:根据程序输出的结果最后5个位置用x进行填充,又因为setw(10)设置输出的宽度效果只对一次输出有效。所以划线处应该填写setw(10)。
6.下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。(D)
A. cout<<internal<<12345;
B. cout<<left<<12345;
C. cout<<right<<12345;
D. cout<<setw(6)<<12345;
解析:选项A),B),C)都没有指输出数据的宽度,所以在输出时,按实际字符的宽度输出,而选项D)指定输出字符的宽度为6,而实际输出的宽度等于5,所以最后一个字符用空格补齐。
7.下列控制对齐方式的操作符中,错误的是( )。(B)
A. intemal
B. center
C. left
D. right
解析:对齐方式的控制操作符left的含义是在设定的宽度内左对齐输出,右端填已设定的填充字符;right(此为默认设置)在设定的宽度内右对齐输出;intemal在设定的宽度内右对齐输出,但若有符号(一或+),符号置于最左端。
8.有如下程序:
#inc1ude<iostream>
#inc1ude<iomanip>
using namespace std;
int main(){
cout<<setfill(’#’)<<setw(4)<<\\(A)
A. ##OK123
B. ##OK#123
C. OK##123
D. OK##123#
解析:setfill是设置填充字符,setw设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以cout<<setfill(’#’)<<seM(4)<<\\
9.若磁盘上已存在某个文本文件,其全路径文件名为d:\\
cre\\\\test.txt,下列语句中不能打开该文件的是( )。(A)
A. ifstream file(\\
B. ifstream file(\\
C. ifstream file; file.open(\\
D. ifstream* pFile=new
解析:此题考查的是转义字符。在字符常量或字符串中,以“\”开头的一系列字符被看做是一个转义字符。要表示“\”字符,必须使用转义字符“\\”。
10.语句ofstreamf(\\(B)
A. 若文件存在,将其置为空文件;若文件不存在,打开失败
B. 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
C. 若文件存在,将文件指针定位于文件首;若文件不存在,打开失败
D. 若文件存在,打开失败;若文件不存在,建立一个新文件
解析:此题考查的是文件打开模式。文件打开模式iso_base::app是为添加数据而打开(总是在尾部写),故只有选项B说法正确。
11.如下函数的作用是以双倍行距输出文件:
void double_space(ifstream&f,ofstream&t){
char C:
whilc(______
本文档预览:3600字符,共6284字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载