问题
单项选择题
有如下程序: #include <iostream> #include <iomanip> using namespace std; int main() { cout.fill('*'); cout << left << setw(4) << 123 << "OK" << endl; return 0; }
A.123*OK
B.123*OK**
C.*123OK
D.*123**OK
答案
参考答案:A
解析: 本题考查了输出流的格式控制。cout的fill()方法的作用是设置填充字符,若输出数据宽度小于设置宽度,则空闲位置用填充字符填满。left和endl是C++预定义的用于格式控制的符号常量,前者使输出数据在指定宽度内左对齐,后者使输出换行。setw()函数的作用是设置输入输出宽度,不过宽度设置的效果只对一次输入或输出有效,在完成了一个数据的输入或输出后,宽度设置自动恢复为0(表示按数据实际宽度输入输出)。所以在本题中,输出整数123时宽度为4且左对齐,空出最后一位填入填充字符'*',结果是123*:输出字符串"OK"时宽度自动恢复为0,结果是OK。故程序的输出结果是123*OK,应该选择A。