模拟题三及参考答案
模拟题三及参考答案
1. C++对C语言作了很多改进,下列描述中_____ 使得C语言发生了质变,即从面向过程变成又面向对象 (2分)
A.增加了一些新的运算符
B.允许函数重载,并允许设置默认参数
C.规定函数说明必须用原型
D.引进了类和对象的概念
2. 按照标识符的要求,_______符号不能组成标识符。(2分)
A.连接符
B.下划线
C.大小写字母
D.数字字符
3. 选择出合法的 if语句(设有int x,a,b,c;)。(2分)
A.if(a==b)x++;
B.if(a=
C.if(a<>b)x++;
D.if(a=>b)x++;
4. 下列while循环的次数是_______。While (int i=0) i--;(2分)
A.0
B.1
C.5
D.无限
5. 下列_______为一个已有的数据类型另外命名。(2分)
A.enum
B.struct
C.typedef
D.union
6.表达式 18/4*Sqrt(4.0)/5 值的数据类型是_______。(2分)
A.int
B.float
C.double
D.不确定
7.sizeof(double)是一个______表达式。(2分)
A.整型
B.双精度
C.不合法
D.函数调用
8. 内联函数定义中,_____不正确。(2分)
A.内联函数体内不能有循环语句和switch语句。
B.执行时在调用处用函数体进行替换。
C.内联函数的声明必须出现在内联函数第一次被调用之前。
D.对内联函数不能进行异常接口声明。
9. 函数不可以_______。(2分)
A.嵌套调用
B.直接递归调用
C.间接递归调用
D.主函数调用主函数
10. 有关函数重载的描述哪些是正确的?(2分)
A.对不同类型的数据进行相同的操作需定义名称完全不同的函数。
B.对不同类型的数据进行相同的操作需定义名称相同的函数。
C.对相同类型的数据进行不同的操作需定义相同的函数。
D.对相同类型的数据进行相同的操作需定义完全不同的函数。
11. 下列函数中,____不能重载。(2分)
A.成员函数
B.非成员函数
C.析构函数
D.构造函数
12. 关于虚函数的描述中,_____是正确的。(2分)
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
13. 下列运算符中,_____运算符在C++中不能重载。(2分)
A.&&
B.[]
C.::
D.new
14. C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream库提供了基本的I/O类。I/O操作分别由两个类istream和ostream 提供,由它们派生出一个类____,提供双向I/O操作。使用I/O流的程序需要包含iostream.h。(2分)
A.iostream
B.iostream.h
C.ostream
D.cin
15. 友元关系是:(2分)
A.单向且能传递
B.双向且不能传递
C.单向且不能传递
D.双向且能传递
16. 在C++类中可以包含________种具有不同访问控制权的成员。(3分)
A.私有
B.公有
C.保护
D.继承
17. 函数模板的优点________。(3分)
A.创建通用功能的函数
B.支持多种不同形参
C.任何子程序调用只要一个模板函数即可
D.简化重载函数的函数体设计
18. 对某具体问题进行抽象分析的结果是通过____来描述和实现的(2分)
19. 类成员的访问控制属性中私有类型的说明用____(2分)
20. 多态是通过___函数和虚函数等技术来实现的(2分)
21. 成员函数类外实现时函数名前必须使用___来限定(2分)
22. 构造函数在定义对象时由___调用(2分)
23. 类模板定义中使用_____关键字(2分)
24. 对象的生存期可以分为静态和___两种(2分)
25. 全局变量是具有___作用域的变量(2分)
26. C++程序按结构可划分为:类___文件、类定义文件和类使用文件(2分)
27. 利用I/O流类库中的操纵符_____可以设置输出宽度。(2分)
28. 利用I/O流类库中的格式标志值______设置以右对齐格式输出数据。(2分)
29. 分析以下程序执行的结果(11分) #include
class Sample {
int x,y;
public:
Sample() {x=y=0;} Sample(int a,int b) {x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"< else cout<<"x!=y"< } void disp() { cout<<"x="< } }; void main() { Sample s1(2,3); . s1.disp(); s1.~Sample(); } 30. 分析以下程序的执行结果(11分) #include class Sample { int x,y; public: Sample() {x=y=0;} Sample(int a,int b) {x=a;y=b;} ~Sample() { if(x==y) cout<<"x=y"< else cout<<"x!=y"< } void disp() { cout<<"x="< } }; void main() { Sample s1,s2(2,3); s1.disp(); s2.disp(); . } 31. 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。(20分) 参考答案: 1D 2A 3A 4A 5C 6C 7A 8B 9D 10B 11C 12C 13C 14A 15C 16ABC 17ABD 18类 19private 20重载 21类域标记 22系统自动 . 23template 24动态 25文件 26申明 27setw() 28ios::right 29. 解: x=2,y=3 x!=y 本题说明了可以显式调用析构函数。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,然后调用一次析构函数,最后在退出程序时又自动调用析构函数,所以输出为: x=2,y=3 x!=y x!=y 注意:析构函数不同于构造函数,析构函数既能被显式调用,也能被隐式调用。 30. 解:x=0,y=0 x=2,y=3 x!=y x=y 本题说明了析构函数的调用顺序,这里定义了两个对象,先顺序调用s1和s2对象的构造函数,再调用各自的成员函数disp(),最后顺序调用s2和s1的析构函数。所以输出为: x=0,y=0 x=2,y=3 x!=y x=y 31. 解: 设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造函数、一个普通成员函数disp()和一个静态成员函数avg(),它用于计算平均分。 本题程序如下: #include #include class Stud { char name[10]; int deg; static int sum; static int num; public: Stud(int n,char na[],int d) { no=n;deg=d; strcpy(name,na); sum+=d; num++; } static double avg() { return sum/num; } void disp() { printf("%-5d%-8s%3d\n",no,name,deg); } }; int Stud::sum=0; int Stud::num=0; void main() { Stud s1(1,"Li",89),s2(2,"Chen",78),s3(3,"Zheng",94); printf("\n学号姓名成绩\n"); s1.disp(); s3.disp(); printf(" 平均分=%g\n\n",Stud::avg()); } 本程序的执行结果如下: 学号姓名成绩 1 Li 89 2 Chen 78 3 Zheng 94 平均分=87