1. 下列类中( )不是输入输出流类iostream的派生类。
A、 fstream B、 ofstream C、 strstream D、 ostrstream
答案:BD
解析:ofstream和ostrstream派生自ostream,而不是iostream
2. 在下列选项中( )不是ostream类的对象。
A、 cin B、 cerr C、 clog D、 cout
答案:A
解析:cin是istream对象
3.read函数的功能是从输入流中读取( )。
A、一个字符 B、当前字符 C、一行字符 D、指定若干个字节
答案:D
解析:read函数可以通过指定参数的方式读取若干个字符
4.下列选项中,用于清除基数格式位设置以十六进制输出的语句是( )。
A、cout<<setf(ios::dec,ios::basefield);
B、cout<<setf(ios::hex,ios::basefield);
C、cout<<setf(ios::oct,ios::basefield);
D、cin>>setf(ios::hex,ios::basefield);
答案:B
解析:
1.使用控制符控制输出格式
控制符 作用
dec 设置整数的基数为10
hex 设置整数的基数为16
oct 设置整数的基数为8
setbase(n) 设置整数的基数为n(n只能是16,10,8之一)
setfill(c) 设置填充字符c,c可以是字符常量或字符变量
setprecision(n) 设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效
数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时,
n为小数位数。
setw(n) 设置字段宽度为n位。
setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示。
setiosflags(ios::scientific) 设置浮点数以科学计数法(即指数形式)显示。
setiosflags(ios::left) 输出数据左对齐。
setiosflags(ios::right) 输出数据右对齐。
setiosflags(ios::shipws) 忽略前导的空格。
setiosflags(ios::uppercase) 在以科学计数法输出E和十六进制输出字母X时,以大写
表示。
setiosflags(ios::showpos) 输出正数时,给出“+”号。
resetiosflags 终止已设置的输出格式状态,在括号中应指定内容。
2.用流对象的成员控制输出格式
流成员函数 与之作用相同的控制符 作用
precision(n) setprecision(n) 设置实数的精度为n位。
width(n) setw(n) 设置字段宽度为n位。
fill(c) setfill(c) 设置填充字符c。
setf( ) setiosflags( ) 设置输出格式状态,括号中应给出格式状态,内容与控制符
setiosflags括号中内容相同。
ubsetf( ) resetiosflags( ) 终止已设置的输出格式状态。
cout.width(10);
cout.setf(ios::hex);
3.设置格式状态的格式标志
格式标志 作用
ios::left 输出数据在本域宽范围内左对齐
ios::right 输出数据在本域宽范围内右对齐
ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充
ios::dec 设置整数的基数为10
ios::oct 设置整数的基数为8
ios::hex 设置整数的基数为16
ios::showbase 强制输出整数的基数(八进制以0打头,十六进制以0x打头)
ios::showpoint 强制输出浮点数的小点和尾数0
ios::uppercase 在以科学计数法输出E和十六进制输出字母X时,以大写表示
ios::showpos 输出正数时,给出“+”号。
ios::scientific 设置浮点数以科学计数法(即指数形式)显示
ios::fixed 设置浮点数以固定的小数位数显示
ios::unitbuf 每次输出后刷新所有流
ios::stdio 每次输出后清除stdout,stderr
以小数形式,保留三位小数输出:
cout<<setprecision(3)<<setiosflags(ios::fixed)<<3.1415926<<endl;
5.下列格式控制符,在iostream.h中定义的是( ),在iomanip.h中定义的是( )。
A、endl B、 setfill C、 setw D、 oct
答案:AD BC
6.包含类fstream定义的头文件是( )。
A、fstream.h B、 ofstream.h C、 ifstream.h D、 iostream.h
答案:A
7.要求可打开文件 “D:\file.dat”写入数,正确的语句是( )。
A、 ifstream infile(“D:\file.dat”,ios::in);
B、 ifstream infile(“D:\\file.dat”,ios::in);
C、 ofstream infile(“D:\file.dat”,ios::out);
D、 fstream infile(“D:\\file.dat”,ios::in | ios::out);
答案:D
解析:A、B是打开文件做读操作
C文件名写成’\’,应该写成’\\’
8.假定已定义浮点型变量 data ,以二进制方式把 data 的值写入输出文件对象 outfile中去,正确的
语句是( )。
A、outfile.write((float *)&data, sizeof(float));
B、outfile.write((float *)&data, data);
C、outfile.write((char *)&data, sizeof(float));
D、outfile.write((char *)&data, data);
答案:C
解析:参加write函数的应用
9. 系统为每个类提供一个this指针,在类的成员函数内,通过this指针可以间接访问这个类的( )。
A、在public段中声明的友元
B、所有成员
C、友元类的public成员
D、所有派生类中的public成员
答案:B
10. 关于动态分配的对象,下面的说法( )是正确的?
A、对于数组A[N],如果是静态分配,N必须是常量;如果是动态分配,N可以是变量。
B、动态分配的对象必须由同类型的指针指出,不管该指针是局部的还是全局的,动态分配对象的生命周期随指针的生命期结束而结束。
C、静态和动态分配的对象在生命期结束时,都自动调用析构函数进行析构。
D、如果在某个函数内动态分配了一个对象,那么这个对象只有在这个函数内才能被访问。
答案:C
11. 在继承关系中,虚基类的作用是( )。
A、实现重载
C、消除二义性
D、使得派生类可以再也不必考虑二义性问题
答案:C
12. 对于有继承关系的父类的构造函数,下面的( )是正确的。
A、构造函数可以通过虚基类的形式被继承。
B、public的构造函数可以被继承。
D、构造函数必须定义成非私有成员。
答案:D
13. 对于指针,下( )是正确的。
A、声明为void类型的指针可以指向任何类型的对象,并且通过该指针可以间接访问它所指向的对象。
B、如果两个指针的类型不是同一个类型,它们就不能相互赋值。(void类型的指针可以与其它类型的指针相互赋值)
C、一个int 类型的指针既可以指向int类型的对象,又可以指向int类型的函数。
D、数组名就是指针。
答案:D
解析:A不能用void指针直接访问对象
B不同类型之间的指针可以互相赋值
C 指向函数的需要是函数指针
14. 有关析构函数的错误的说法是( )。
A、一个类的析构函数有且只有一个。
B、析构函数无函数类型。
C、析构函数和构造函数一样,可以有形参。
D、析构函数的作用是在对象生命期结束时,收回分配给其的内存空间。
答案:C
15. 对于操作符重载,下面( )的说法是正确的。
A、用户每定义一个类,系统会自动提供一个赋值运算符重载函数,所以完全不必考虑重载赋值运算符函数。
B、运算符重载函数可能既不是成员函数,也不是友元函数。
C、运算符如果被重载为非成员函数,那么对象就不能利用这个运算符重载函数进行操作。
答案:B
16. 关于类的友元函数的下述描述中,( )是正确的。
A、友元函数可以被继承。
B、一个类的友元函数可以访问这个类的所有成员。
C、一个类的友元函数必须在这个类中定义成内联函数。
D、一个类的友元函数的返回类型必须是这个类的类型标识符。
答案:B
17. 类B的数据成员中“有一个”A类的对象,这种类之间的关系是 ( )。
A、继承关系 B、间接关系
C、复合关系 D、直接关系
答案:C
18. 下列C++标点符号中表示行注释开始的是( )。
A、# B、;
C、// D、}
答案:C
19. 下列字符串中可以用作C++标示符的是( )。
A、_256 B、class
C、delete D、5char
答案:A
解析:B、C是关键字,D不能以数字开头
20. 下列关于C++函数的描述中正确的是( )。
A、主函数是程序的入口,它是由用户定义的函数调用。
B、函数是C++中面向对象程序设计框架的基本组成元素。
C、函数在调用前必须先被声明。
D、每个用户定义函数只能被其他函数调用一次。
答案:C
解析:A运行时库会调用主函数
B 类
D 可以被随意调用
21. 下列关于C++关键字的说法中正确的是( )。
A、关键字是用户为程序中各种需要命名的“元素”所起的名字。
B、关键字是对程序中的数据进行操作的一类单词。
C、关键字是在程序中起分割内容和界定范围作用的一类单词。
D、关键字是C++中预先定义并实现一定功能得一类单词。
答案:D
22. 每个C++程序都必须由且仅有一个( )。
A、预处理命令 B、主函数
C、函数 D、语句
答案:B
23. 下面关于对象概念的描述中,( )是错误的。
A、对象就是C语言中的结构变量
B、对象代表着正在创建的系统中的一个实体
C、对象是一个状态和操作(或方法)的封装体
D、对象之间的信息传递是通过消息进行的
答案:A
24. C++对C语言做了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成面向对象。
A、增加了一些新的运算符
B、允许函数重载,并允许设置默认参数
C、规定函数说明必须用原型
D、引进类和对象的概念
答案:D
25. 下面关于类概念的描述中,( )是错误的。
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的样板
D、类就是C语言中的结构体类型
答案:D
解析:参见C++类和C结构体之间的区别
26. C++语言是以( )语言为基础逐渐发展而演变而成的一种程序设计语言。
A、Pascal B、C
C、Basic D、Simula67
答案:B
27. C++语言中规定函数的返回值的类型是由( )。
A、return语句中的表达式类型所决定的
B、调用该函数式的主调用函数类型所决定的
C、调用该函数式系统临时确定的
D、在定义该函数式所指定的数据类型所决定的
答案:D
28. 下列关于C++与C语言关系的描述中错误的是( )。
A、C++是C语言的超集
B、C++是C语言进行了扩充
C、C++是C语言都是面向对象的程序设计语言
D、C++包含C语言的全部语法特征
答案:C
解析:C语言是面向过程的程序设计语言
29. 下列字符串中可以用做C++标示符的是( )。
A、 521 B、computer~1 C、case D、3var
答案:A
30. 面向对象程序设计思想的主要特征中不包括( )。
A、封装性 B、多态性
C、继承性 D、功能分解,逐步求精
答案:D
31. 下列C++标点符号中表示一条预处理命令开始的是 A 。
A、# B、// C、} D、;
答案:A
32. 下列关于C++类的描述中错误的是( )。
A、类与类之间可以通过一些手段进行通信和联络
B、类用于描述事物的属性和对事物的操作
C、类与类之间必须是平等的关系,而不能组成层次关系
D、类与类之间可以通过封装而具有明确的独立性
答案:C
33. 下列C++标点符号中表示一条语句结束的是( )。
A、;
B、//
C、#
D、{
答案:A
34. 下列C++标点符号中表示复合语句结束的标记符是( )。
A、#
B、//
C、}
D、;
答案:C
35. 下列C++标点符号中表示复合语句开始的标记符是( )。
A、{
B、//
C、}
D、;
答案:A
36. 下列关键字中,( )即在C语言中使用,又在C++语言中使用。
A、inline
B、break
C、private
D、public
答案:B
37. 下列字符串中不可以用作C++标示符的是( )。
A、 521
B、computer123
C、int
D、flower
答案:C
38. 下列不正确的选项是() 。
A、C++语言是一种面向对象的程序设计语言,它支持面向对象思想中的3个主要特征
B、标点符号是在程序中起分割内容和界定范围作用的一类单词
C、iostream 是一个标准的头文件,定义了一些输入输出流对象
D、类与类之间不可以进行通信和联络
答案:D
39. 下列不正确的选项是
A、封装是一种信息隐藏技术
B、标识符是由字母、数字、下划线组成的字符串,必须以数字或下划线开头
C、编译是由源程序文件转换到目标文件的过程
D、一个C++程序可以认为是函数串
答案:B
40. 下列与流程控制有关的关键字是( )。
A、goto
B、static
C、int
D、sizeof
答案:A