c+练习题带答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c+练习题带答案 This manuscript was revised by the office on December 10, 2020.
一、选择题
1.C++语言属于( C )。
A)自然语言 B)机器语言 C)面向对象语言 D)汇编语言
2.下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性 B)多态性 C)相似性 D)封装性
3.下列情况中,哪一种情况不会调用拷贝构造函数( B )
A)用派生类的对象去初始化基类对象时
B)将类的一个对象赋值给该类的另一个对象时
C)函数的形参是类的对象,调用函数进行形参和实参结合时
D)函数的返回值是类的对象,函数执行返回调用者时
4.以下哪一关键字可用于重载函数的区分(C)
A)extern B)static C)const D)virtual
5.下列有关数组的叙述中,正确的是( B )
A)C++中数组的存储方式为列优先存储
B)数组名可以作为实参赋值给指针类型的形参
C)数组下标索引从1开始,至数组长度n结束
D)数组指针的语法形式为:类型名 *数组名[下标表达式];
6.下列有关继承和派生的叙述中,正确的是( C )
A)派生类不能访问通过私有继承的基类的保护成员
B)多继承的虚基类不能够实例化
C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数
D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
7.若有下面的函数调用:
fun(a+b, 3, max(n-1, b));
其中实参的个数是( A)
A)3 B)4 C)5 D)6
8.下列关于this指针的说法正确的是( B)
A)this指针存在于每个函数之中
B)在类的非静态函数中this指针指向调用该函数的对象
C)this指针是指向虚函数表的指针
D)this指针是指向类的函数成员的指针
9.在下列关于C++函数的叙述中,正确的是(C)
A)每个函数至少要有一个参数B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明D)函数不能自己调用自己
10.下列运算符中,不能重载的是(C)
A)&& B)!= C). D)->
11.下面程序的输出结果是(B)
#include
using namespace std;
int i = 0;
int fun(int n)
{
static int a = 2;
a++;
return a+n;
}
void main()
{
int k = 5;
{
int i = 2;
k += fun(i);
}
k += fun(i);
cout << k;
}
A)13 B)14 C)15 D)16
12.下面程序的输出结果是(C)
#include
using namespace std;
class Base
{
public:
virtual void f() { cout << “f0+”; }
void g() { cout << “g0+”; }
};
class Derived : public Base
{
public:
void f() { cout << “f+”; }
void g() { cout << “g+”; }
};
void main() { Derived d; Base *p = &d; p->f(); p->g(); } A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+
13.以下程序的输出结果是:(D)
#include
using namespace std;
int fun(char *s)
{ char *p=s;
while (*p!='\0') p++;
return (p-s);
}
void main(){
cout< } A.0 B. 1 C. 2 D. 3 14.有如下程序段: int i=1; while(1) { i++; if (i==10) break; if(i%2==0) cout<<’*’; } 执行这个程序段输出字符*的个数是(C) A. 10 B. 3 C. 4 15.下列关于虚基类的描述中,错误的是(C) A. 使用虚基类可以消除由多继承产生的二义性 B. 构造派生类对象时,虚基类的构造函数只被调用一次 C. 声明 class B:virtual public A 说明类B为虚基类 D. 建立派生类对象时,首先调用虚基类的构造函数 16.有下类定义 Class A { Char *a; Public: A():a(0){} A(char *aa) {new char[strlen(aa)+1] B. char[strlen(aa)+1] C. char[strlen(aa)] D. new char[sizeof(aa)-1] 17.有如下程序: #include using namespace std; class Test{ public: Test(){} ~Test(){cout<<'#';} }; int main(){ Test temp[2], *pTemp[2]; return 0; } 执行这个程序输出星号(#)的个数为(B)。 A)1 B)2 C)3 D)4 18.友元运算符obj++被C++编译器解释为(D)。 A. operator++(obj) B. operator++(obj,0) B. ++( ) D. ++(0) 19.下面程序的运行结果为( C ) #include class A { int num; public: A(int i){num=i;} A(A &a){num=++;} void print(){cout< }; void main() { A a(1),b(a); (); (); } B.12 20.如果类A被说明成类B的友元,则( D ) A.类A的成员即类B的成员 B.类B的成员即类A的成员 C.类A的成员函数不得访问类B的成员