21xrx.com
2024-12-22 20:54:10 Sunday
登录
文章检索 我的文章 写文章
C++选择题题库及答案解析
2023-07-03 06:28:23 深夜i     --     --
C++ 选择题 题库 答案解析

作为一名C++程序员,想必大家都不会陌生C++选择题了吧。C++选择题是我们熟知的一种考试方式,因其简单明了、易于考查、测评效果好等优点,被广泛应用于C++编程教育、职场招聘、技能认证等场合。下面,我们为大家整理了一份C++选择题题库及答案解析,供大家参考。

一、选择题题库

1. 下列八种数据类型中,不属于基本数据类型的是:

A. int  B. char  C. double  D. string

2. 下列关于C++函数的说法中,正确的是:

A. 函数可以没有返回值  B. 函数没有参数时,调用时要跟空括号

C. 多个函数名相同,但参数个数和参数类型不同的函数可以共存 D. 函数中可以定义全局变量

3. 下列程序的输出结果是:

#include

using namespace std;

int main()

{

  cout << "I " << "like " << "C++!" << endl;

  return 0;

}

A. I like C++! B. I, like, C++!

C. IlikeC++!  D. I\nlike\nC++!

4. 下列关于C++中数组的说法中,正确的是:

A. 数组可以存储不同类型的数据 B. 数组名就是地址常量

C. 数组下标可以有小数 D. 数组长度可以小于0

5. 下列程序的输出结果是:

#include

using namespace std;

class A

{

public:

  void print() cout << "Hello

};

int main()

{

  A* a = new A();

  a->print();

  delete a;

  a = nullptr;

  return 0;

}

A. Hello, A! B. 空输出

C. 运行错误 D. 编译错误

6. 下列关于C++中指针的说法中,正确的是:

A. 指针的地址和指针所指的数据的类型必须相同 B. 可以使用null值对指针进行初始化

C. 指针必须初始化之后才能使用 D. 指针可以超出所指的范围

7. 下列程序的输出结果是:

#include

using namespace std;

int main()

{

  int* p;

  if (!p) cout << "Pointer is null." << endl;

  else cout << "Pointer is not null." << endl;

  return 0;

}

A. Pointer is null. B. Pointer is not null.

C. 运行错误 D. 编译错误

8. 下列关于C++中引用的说法中,正确的是:

A. 引用必须在声明时进行初始化 B. 引用只能指向堆内存

C. 引用可以指向多个变量 D. 引用必须使用&符号来定义

9. 下列程序的输出结果是:

#include

using namespace std;

int a = 1;

void func(int a)

  a = 2;

  return;

int main()

{

  func(a);

  cout << a << endl;

  return 0;

}

A. 1 B. 2

C. 0 D. 运行错误

10. 下列关于C++面向对象的说法中,正确的是:

A. 对象可以直接访问另一个对象的私有成员数据 B. 类的静态成员函数只能访问类的静态成员数据

C. 派生类的构造函数可以调用基类的构造函数 D. 多重继承是C++特有的继承方式

二、答案解析

1. D。

int、char、float、double、bool、void和wchar_t是C++中的基本数据类型,而string是一个类类型。

2. A、C。

函数可以没有返回值,这时候其返回类型为void;当函数没有参数时,调用时要跟空括号;多个函数名相同,但参数个数和参数类型不同的函数可以共存;函数中定义的变量只是在函数内部有效,不具有全局性。

3. A。

<<是C++的流运算符,将多个字符串以及变量输出到屏幕,并自动添加空格和换行符。cout是一个标准输出对象,endl表示换行符,cout << "I " << "like " << "C++!" << endl等价于cout << "I" <<" " << "like" <<" " << "C++!" <<" "<< endl。所以程序的输出结果是I like C++!。

4. B。

数组名就是地址常量,数组下标必须是整数,数组长度必须大于0。

5. A。

程序定义了一个类A,然后定义了一个A类型的指针a,将其初始化为new A()生成的堆对象地址,调用这个对象的print()方法打印“Hello, A!"后,再调用delete释放堆对象,将其地址赋值为nullptr。程序输出Hello, A!。

6. B。

指针的地址和指针所指的数据的类型可以不同,可以使用nullptr对指针进行初始化,指针必须初始化之后才能使用,指针不能超出其所指的范围。

7. A。

定义了一个指向int类型的指针p,但没有初始化,if语句中的条件!p可以转化为p==nullptr,因为p没有初始化,所以!p等价于p==nullptr,满足条件,所以输出Pointer is null.。

8. A、C。

引用必须在声明时进行初始化,引用可以指向多个变量,引用必须使用&符号来定义,引用不是独立的对象,它只是它所引用的对象的别名,所以,引用不指向别的区域。

9. A。

声明一个全局变量a,并将其初始化为1,在函数内部接受这个变量的值,并将其修改为2,但函数内部的a是局部变量,函数中传递的是值,函数外面的a的值没有被修改,所以输出1。

10. B、C。

对象不能直接访问另一个对象的私有成员数据,只有其公有成员函数才能访问。类的静态成员函数只能访问类的静态成员数据,也不能访问这个类的非静态成员数据和成员函数。派生类的构造函数在初始化列表中必须调用基类的构造函数,初始化列表是一个派生类构造函数的特有语法,负责初始化派生类中的成员对象和基类的子对象。多重继承是C++特有的继承方式,它可以让一个派生类继承多个基类。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复