一、选择题
1、基类中的保护成员在其私有派生类中的访问属性是( A )。 A.私有 B.公有 C.保护 D.不确定
2、在类的非静态成员函数中,不可以直接访问的数据成员是( D )。 A.本类的私有成员 B.本类的保护成员 C.本类的公有成员 D.本类的所有非静态成员 3、下列标示符中,不符合C++标示符命名规则的是( C )。 A.x10 B. _total C.π D.www
4、下列整型常数中,不符合C++语法的是( C )。 A.12u B.-67l C.059 D.0X11ff 5、下列常量中,不符合C++语法的是( D )。
A.”\\0” B.‘*’ C.“” D.“It’s an array!” 6、下列数组的初始化形式中,不符合C++语法的是( A )。 A.int s1[3]={1,2,3,4} B.int s2[3]={0} C.char s3[3]={‘a’,’x’,’d’} D.char s4[]=“asd” 7、如果说明语句为:int a[4]={10,20,30,40,50}, *p=&a[2];则*p的值是 ( B )。
A.a[2]的地址 B.30 C.20 D.不确定
8、已知:int a[3][3];下列表示数组元素a[0][0]的方法中,不符合C++语法的是( C )。
A.**a B.*a[0] C.a[0] D.*(*a[1]-1)
9、已知:int a=3,b=5,下列表达式中,值为0的表达式是( B )。 A.a%5-5 B.a/b C.!a||b D.a&&b 10、C++中字符常数的定界符是( B )。 A.” B.‘ C.# D.\\
11、已知:int a=9,sum=0;下列循环中,不构成死循环的是( A )。 A.for(;a;a++) sum+=a-- B.do{sum+=a--}while(--a); C.while(a=1) sum+=a--; D.do{sum+=a}while(a-1);
1 / 20
12、如果定义一个函数时未指定该函数的返回值类型,则函数返回值类型应是 ( B )。
A.无 B.int C.任意 D.void 13、下列描述中,属于传值调用的是( C )。
A.形参是指针,实参是地址 B.形参、实参都是数组
C.形参是变量,形参是常数 D.形参是指针,实参是数组名。 14、在类的友元函数中,可以访问的数据成员是( D )。 A.本类的私有成员 B.本类的保护成员 C.本类的公有成员 D.本类的所有成员
15、下列各种函数中,在对象生命期结束时自动调用的函数的是( B )。 A.构造函数 B.析构函数 C.友元函数 D.虚函数 16、下列描述中,属于析构函数的特征是( D )。 A.函数的名字与类名无关 B.函数可以重载
C.函数形参可有可无 D.不能指定函数返回值的类型 17、列对类的描述中,不符合C++语法的是( B )。 A.一个派生类至少有一个基类 B.一个派生类只能有一个基类 C.一个基类不可以有多个派生类 D.抽象类一定是另一个类的基类
18、C++中的虚函数可以实现的面向对象的基本特性是( D )。 A.封装性 B.继承性 C.抽象性 D.多态性 19、下列关于运算符重载的描述中,错误的是( D )。 A.运算符只能重载为成员函数 B.运算符只能重载为友元函数 C.有些运算符只能重载为成员函数 D.有些运算符只能重载为友元函数
20、有文件打开语句:ofstream fout(“data”);则下列描述中,正确的描述是( D )。
A.fout是一个标准输入流对象; B.fout是一个标准输出流对象;
2 / 20
C.fout是一个文件输入流对象; D.fout是一个文件输出流对象; 21、下列标示符中,符合C++标示符命名规则的是( A )。 A.Amax B.x(2) C.int D.姓名 22、下列常数中,不符合C++语法的是( C )。 A..5 B.‘7’ C.2e0.5 D.3.14f 23、下列字符常量中,不符合C++语法的是( B )。 A.’\\0’
B.‘\\’
C.‘3’
D.‘*’
24、以下指针用法中错误的是( B )。 A.int i; int *ptr=&i; C.int *ptr=0;
B.int *ptr=2000;
D.int i, *ptr=&i; *ptr=5;
25、下列描述中,不属于地址调用的是( D )。
A.形参、实参是指针 B.形参、实参都是数组
C.形参是指针,实参是数组名 D.形参是变量的引用,实参是变量 26、下列各种函数中,在对象生命期结束时自动调用的函数是( B )。 A.构造函数 B.析构函数 C.友元函数 D.虚函数 27、下列描述中,不属于虚函数的特征是( C )。
A.函数定义时不加virtual B.是类的非静态成员函数 C.函数没有形参 D.不能重载 28、C++中设置友元函数的目的是( B )。
A.解决继承中的二义性问题 B.提高编程效率 C.实现动态多态性 D.实现静态多态性 29、下列关于运算符重载的描述中,正确的是( D )。 A.运算符重载可以改变操作数的个数 B.运算符重载可以改变原有运算符的优先级 C.运算符重载可以改变运算符的结合性 D.运算符重载可以定义新的运算方法
30、用I/O流打开一个文件时,如果不指定文件存储方式,则该文件的格式是(B)。 A.二进制文件 B.文本文件 C.无格式 D.不确定 二、判断题(每题1分,共10分,对的打√,错的打×)
3 / 20
1、一个程序文件中,main函数有且只能有一个。 ( √ ) 2、程序中的注释是可执行的语句。 ( × ) 3、C++的表达式中不允许不同类型数据的混合运算。 ( × ) 4、系统函数不需要任何人定义,编程时可直接使用。 ( × ) 5、数组名可以看作一个指针变量。 ( × ) 6、不同函数间传递数组时,采用的是引用调用方式。 ( × ) 7、虚函数可以是类的静态成员。 ( × ) 8、抽象类只能做基类,但可以定义该类的对象。 ( × ) 9、文本文件只能保存字符数据,不能保存数值数据。 ( × ) 10、函数调用在前,定义在后时,需要原型声明。 ( √ ) 11、main函数总是程序中第一个被执行的函数。 ( √ ) 12、程序中的注释是写给编程人员看的。
( √ )
13、C++的表达式中允许不同类型数据的混合运算。 ( √ ) 14、函数在调用之前必须先定义或声明。 ( √ )
15、数组名中存放的是一个地址。
( √ )
16、不同函数间传递数组时,采用的是地址调用方式。 ( √ ) 17、基类的指针可以指向其派生类的对象。
( √ )
18、复制构造函数与构造函数的执行时机是一样的。
( × )
19、类中定义的成员函数都是内联函数。 ( √ ) 20、没有main函数的C++程序也可以执行。 ( × ) 21、程序中有没有注释不影响程序的执行。
( √ )
22、一个函数的函数体中不能包含另一个函数的定义。 ( √ )23、类的任何公有成员在类体外必须通过对象来访问。 ( × )24、一个指针变量指向数组元素时可以做++或—操作。 ( √ )25、具有块作用域的变量在块结束时,所占存储空间一定被释放。 (三、阅读程序写结果 1、#include 4 / 20 ) × for(k=7; k>=0; k--){ switch(k){ case 1: case 4: case 7: s+=k; break; case 2: case 3: case 6: break; case 0: case 5: s++; break; } } cout<<”S=”< 2、写出以下程序运行时分别输入1、0、5时的输出结果。 #include cout<<”输入一个整数:”; cin>>a; switch(a>0) { case 1: switch(b<10) { case 0:cout<<″*″< 5 / 20 { case 0:cout<<″ok1\\n″; case 1:cout<<″ok2\\n″; } } } 输出结果:答: 第一次运行: 输入一个整数:1 # ! ok2 第二次运行: 输入一个整数:0 ok2 第三次运行: 输入一个整数:5 # ! ok2 3、写出下列程序运行时输入9的运行结果 #include int a[10]={23,4,78,9,9,37,92,47,9,17}, x, i, k= -1; cout<<”Input a number:”; cin>>x; for(i=0; i<10; i++) if(a[i]!=x) a[++k]=a[i]; for(i=0; i<=k; i++) cout<6 / 20 输出结果:答: 23 4 78 37 92 47 17 4、#include for(i=0;i<4;i++) a[i]=0; k=3; for(i=0;i cout<输出结果:答: 10 12 5、#include for(i=1;i<=5;i++) cout<long fac(int n) { static long f=1; f=f*n; return f; } 输出结果:答: 7 / 20 1 2 2 6 3 24 4 120 5 720 6、#include { int a(10), b(20); cout<输出结果:答: 10 20 20 22 7、#include static long sum; public: myclass(int a,int b) { x=a;y=b;} void getxy() { sum*=x*y; cout<<″sum=″< 8 / 20 long myclass::sum=1; void main() { myclass ob1(1,2); ob1·getxy(); myclass ob2(3,4); ob2·getxy(); myclass ob3(5,6); ob3·getxy(); } 输出结果:答: sum=2 sum=24 sum=720 8、#include cube(int ht=2,int wd=5,int dp=3) { height=ht; width=wd; depth=dp; cout<<″depth=″< int height,width,depth; }; void main() { cube cone(10,20,15),ctwo; cout< cout< depth=15construncted called depth=3construncted called 3000 30 depth=3Destructed called depth=15Destructed called 9、#include virtual void disp() {cout<<”A”< void disp(){ cout<<”B”< 输出结果:答: 10 / 20 B A输出结果:答:S=14
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务