解答: 
本题主要考查对格式化输入输出的掌握。 ①本题主函数中第三行输出a,b,’\\t’为转义字符,其含义是跳过一个制表位。不设置输出宽度时,默认输出6位有效数字,超出部分四舍五入。所以该行输出为:23      23.1235。 
② setprecision(n)设置显示精度,最少显示一位有效数字。如果不重新设置,则其保持效力,所以使用
409--29 
完后要还原为6位默认值。第四行中设置setprecision(0)与setprecision(1)作用相同,结果显示一位有效数字即为:2e+001。 
③ setiosflags(ios::fixed)为固定的浮点显示,其后跟setprecision(n)表示小数点后显示精度为n。所以第五行输出结果为:23.1234568。 
④ setiosflags(ios::scientific)为指数显示,当其整数部分宽度大于设置的显示精度(默认为6位)时,以指数形式显示结果。否则根据设置的(或默认的)显示精度显示n位有效数字。所以第六行输出结果为:23.12346。 
⑤ setiosflags(ios::showbase)为指定在数值前输出进制。hex置基数为16,且该操作保持效力,所以使用完后应该恢复为默认值10进制。第九行输出结果为:0x17    0x17。 
⑥setw(n) 设域宽为n个字符,setfill(c) 设填充字符为c ,setiosflags(ios::left)为左对齐。第十一行输出结果为:23********。 答案为: 
23      23.1235 2e+001 23.1234568 23.12346 0x17    0x17 23********  
【习题】 一、 选择题 
1. 下列数据类型不是C++语言基本数据类型的是(  )。 
(a)字符型    (b)整型     (c)浮点型    (d)数组 
一、 下列字符列中,可作为C++语言程序自定义标识符是(  )。选择题 
2.  
(a)x          (b)-var     (c)new      (d)3i 3. 下列数中哪一个是8进制数(  )。 
(a)0x1g       (b)010       (c)080      (d)01b 
4. 已知a=1,b=2,c=3,则表达是++a||-b&&++c的值为(  )。 
(a)0          (b)1         (c)2        (d)3 5. 下列表达式选项中,(  )是正确的。 
(a)++(a++)    (b)a++b      (c)a+++b    (d)a++++b 6. 已知枚举类型定义语句为:( )。 
enum color{RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15}; 则下列叙述中错误的是(  )。 
(a)枚举常量RED的值为1        (b)枚举常量BLUE的值为1 (c)枚举常量YELLOW的值为7     (d)枚举常量PURPLE的值为15 7. 下列程序的运行结果正确的是(  )。 
#include #include void main() { 
 const double pi=3.1415926; 
 cout<  <  <(a) 3.142 
3.142 
**3.14159260 (b) 3.14 
3.142 
409--30 
**3.14159260 (c) 3.14 
3.14 
3.14159260** (d) 3.14 
3.142 
***3.1415926 
 
8. 若int x=3,y=5;则表达式x&y++%3的值为(  )。 
(a)0          (b)1          (c)2          (d)3 9. 下列常量正确的是(  )。 
(a) ”hello    (b)1FL        (c) 3.14UL     (d) 1.8E-3       World”  
10. 若char x=97;,则变量x包含几个字符(  )。 
(a)1个        (b)2个       (c)4个        (d)8个 
二、 填空题 
1. c++语言标示符是以字母或__________开头的,由字母、数字、下划线组成。 2. 在C++语言中,char型数据在内存中的存储形式是__________。 
3. 在内存中,存储字符‘x’占用1个字节,存储字符串“x”要占用________个字节。 4. 符号常量可以用宏定义define和__________表示。 5. 转义字符序列中的首字符是_________。 6. 空字符串的长度是__________。 
7. 表达式cout<<’\\n’;还可以表示为__________。 
8. 若要为unsigned int定义一个新的名字UINT应采用的语句是__________。 9. 以下程序不借助第3个变量实现a,b值得交换,请填空。 
#include Void main() { 
int a,b; 
cout<<”输入a,b:”; cin>>a>>b; 
a=___a+b_______; b=_____a-b_____; a=______(a-b)/2; 
cout<10. 大多数C++程序都要包含头文件__________。该文件中包含了所有输入/输出流操作所需的基本信
息。当使用带参数的操作时,程序中必须包含头文件__________。  
三、 编程题 
1. 编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位。 
2. 编写一个程序打印出各种基本数据类型、几个你自己定义的复合数据类型的大小。使用sizeof运
算符。 
 
【参考答案】 
一、 选择题 
1. d 2. a 3. b 4. b 5. c 6. a 
409--31 
7. b 8. c 9. d 10. a 二、 填空题 
1. 下划线 2. ASCII 3. 2 4. const 5. \\ 6. 0 
7. cout<8. typedef unsigned int UINT; 9. a+b      a-b      a-b 
10. iomanip.h      iostream.h 三、 编程题 1. 
#include void main() { 
 int num,var1,var2,var3; 
 cout<<\请输入一个三位数:\ cin>>num; 
 if(num>999||num<100)     //用于检查输入数据的合法性   cout<<\您的输入有误!\ else  {   var1=num/100;   var2=(num-var1*100)/10;   var3=num;   cout<<\百位数为:\   <<\十位数为:\   <<\个位数为:\ } } 
2. 
#include #include void main() {  
   int array[10];   enum month{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};   char *p;   cout<<\      <<\      <<\      <<\       <<\       <<\   <<\   <<\   <<\   <<\   <<\    <<\  } 
 
 
409--32