国家二级C++机试(运算符重载、模板和C++流)模拟试卷8
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.有如下程序: #include<iostrearn> using namespace std; int main() { cout.fill('*'); cout.width(6); cout.fill('#'); cout<<123<<endl; return 0; } 执行后的输出结果是( )。
(分数:2.00)
A.###123 √
B.123###
C.***123
D.123***
百里守约出装
解析:解析:此题考查的是I/O格式化输出。函数width(int n)设置输入输出宽度,当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据宽度大于设置的宽度时,仍按实际宽度输出;函数fill(char c)用来设置填充字符。
2.下面关于C++流的叙述中,正确的是( )。
(分数:2.00)
A.cin是一个输入流对象 √
B.可以用ifstream定义一个输出流对象
C.执行语句序列char*y="PQMN'';cout<<,y;将输出字符串"PQMN”的地址
D.执行语句序列char x[80];cin.getline(x,80);时,若键入 Happy new year 则x中的字符串是"Happy''
解析:解析:此题考查的是C++流的概念和I/O的格式化。cin是类的对象,亦即输入流对象;ifstream是输入文件流类,不能定义一个输出流对象:C选项中最后输出的是字符串“PQMN”:D选项中x中字符串应该是“Happy new year”。主板类型
3.有如下程序: #include<iostream> #include<iomanip> using namespace std; int main() { cout.fill('*'); cout<<left<<tw(4)<<123
(分数:2.00)
A.123*OK √
B.123*OK**
C.*123OK
D.*123**OK
解析:解析:此题考查了输出流的格式控制。cout的fill()是设置填充字符:left和endl分别是使输出数据左对齐和换行;tw()函数的作用是设置输入输出的宽度,此设置效果只对以此输入或输出有效。此题中,输出整数123时宽度为4且左对齐,得到“123*”;输出字符串“OK”时宽度没有定义实际大小输出,结果得到OK:故最后得到的输出结果是123*K。
4.下列关于输入流类成员函数getline()的描述中,错误的是( )。
(分数:2.00)
A.该函数是用来读取键盘输入的字符串的 √
B.该函数读取的字符串长度是受限制的
C.该函数读取字符串时,遇到终止符便停止
D.该函数读取字符串时,可以包含空格小叮当歌曲
解析:解析:此题考查的是getline()函数。getline()函数的原型为:istream_type&getline(char_type*s,strearnsize,char_typedelim);。其功能是从当前输入位置开始提取字符存入s所指向的具有n个字节的字符空间中。遇到以下情况时停止:已提取并存储了n-1个字符;到流尾,无字符可取:下一个要提取的字符等于结束标志字符delim。故选项B、C、D都是正确的。getline()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A错误。
5.有如下程序 #include<iostream> #include<iomanip> using namespace std; int main(){ cout<<tprecision(3)<<fixed<<tfill('*')<<tw(8); cout<<12.345<<_______<<34.567; return 0: } 若程序的输出是: **12.345**34.567 则程序中
下划线处遗漏的操作符是( )。
(分数:2.00)
A.tprecision(3)
B.fixed
C.tfill('*')
D.tw(8) √
双鱼座和巨蟹座解析:解析:此题考查的是输出函数的格式控制。此题中,操作符tprecision的作用是设置浮点数的精度;fixed的作用是让浮点数按定点格式输出;tfill的作用是设置填充字符;tw的作用是设置输入输出的宽度,一次有效的设置。下划线处应填一个让34.567的输出宽度为8的操作符,即tw(8)。
6.使用输入输出操作符tw,可以控制( )。
(分数:2.00)
A.输出精度
B.输出宽度 √
C.对齐方式
D.填充字符
解析:解析:此题考查的是C++流的操作符。在C++流中,操作符tw的作用是设置输入输出宽度。
7.已知一程序运行后执行的第一个输出操作是( )。 cout<<tw(10)<<tfill('*')<<1234; 则此操作的输出结果是
(分数:2.00)
A.1234
B.******1234 √
C.**********1234
D.1234******
解析:解析:此题考查的是输入输出的格式控制。tw()控制的是输入输出的宽度;tfill()控制的是输出的填充字符。所以本题的输出结果是*****1234。
8.有如下4个语句: ①cout<<'A'<<tfill('*')<<left<<tw(7)<<'B'<<endl; ②cout<<tfill('*')<<left<<tw(7)<<'A'<<'B'<<endl; ③cout<<'A'<<rfill('*')<<right<<tw(7)<<'B'<<endl; ④cout<<tfill('*')<<right<<tw(7)<<'A'<<'B'<<endl; 其中能显示A******B的是( )。
(分数:2.00)
A.①和③
B.①和④
C.②和③ √
D.②和④
解析:解析:此题考查C++流的使用。tfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:fight是使输出数据在指定宽度内右对齐。
9.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的''<<left",输出效果将发生变化的是( )。
(分数:2.00)
&ut<<leR<<tfill('*')<<357;张骞出塞
&ut<<left<<tw(5)<<357; √
&ut<<left<<tw(5)<<''ABCDE'';
&ut<<left<<''ABCDE'';
解析:解析:此题考查的是C++流。tfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐;tw()的作用是设置输入输出宽度,且只对当前一次有效。
10.假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同
的语句是( )。
(分数:2.00)
&ut<<tfill('*')<<123<<tw(9)<<321;
&ut<<tfill('*')<<tw(6)<<left<<123<<tw(6)<<right<<321; √
&ut<<123<<tfill('*')<<tw(6)<<321;内存不能为
&ut<<tfill('*')<<tw(9)<<left<<123<<321;
解析:解析:按照选项B的输出格式控制符输出的结果为“123******321”,而按照选项A、C、D的输出格式控制符输出的结果为“123***321”。
11.有如下程序: #include<iostream> #include<iomanip> using namespace std; int main(){ int s[]={123,234}; cout<<right<<tfill('*')<<tw(6); for(int i=0;i<2;i++){cout<<s[i]<<endl;} return 0; } 运行时的输出结果是( )。
(分数:2.00)
A.123 234
B.***123 234 辞辞如尘√
C.***123 ***234
D.***123 234***
解析:解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘*’补齐。在C++中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度设置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[0]中的元素时,按照规定的格式输出,其结果为***123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。
12.下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。
(分数:2.00)
A.tprecision √
B.tw
C.tfill
D.showpoint
解析:解析:tprecision(int n):设置浮点数的精度(有效位数或小数位数),等价函数调用:ioprecision(n)。
13.有如下程序: #include<iostream> #include<iomanip> using namespace std; int main(){ cout<<tw(10)<<tfill('x')<<tprecision(8)<<left; cout<<12.3456793<<______<<98765; return 0; } 若程序的输出是12.345679x98765xxxxx,则划线处缺失的部分是( )。
(分数:2.00)
A.tw(10) √
B.tfill('x')
C.tprecision(8)关于风的诗句
D.right
解析:解析:根据程序输出的结果最后5个位置用x进行填充,又因为tw(10)设置输出的宽度效果只对一次输出有效。所以划线处应该填写tw(10)。
14.下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。
(分数:2.00)