C++PTA判断/选择题总结

1-1 使用提取符(<<)可以输出各种基本数据类型的变量的值,也可以输出指针值。 (2分) T
1-2 预定义的插入符从键盘上接收数据是不带缓冲区的。 (2分) F
1-3 The cin stream normally is connected to the display screen. (2分) F
【cout 对象通常连接到标准输出设备,一般是显示屏】

2-1命名空间应用于: (2分)

在类外定义类的成员函数
√避免各个不同函数、变量等的名称冲突
提高代码的执行速度
以上答案都正确

2-2cout 是由I/O 流库预定义的( )。 (2分)

类
√对象
包含文件
常量

2-1 重载函数在调用时选择的依据中,错误的是()。 (2分)

函数的参数
参数的类型
函数的名字
√函数的类型

2-2 对定义重载函数的下列要求中,( )是错误的。 (2分)

要求参数的个数不同
要求参数中至少有一个类型不同
√要求函数的返回值不同
要求参数个数相同时,参数类型不同

1-1 函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。 (1分) T
1-3The types of arguments in a function call must match the types of the corresponding parameters in the function prototype’s parameter list.。 (2分) T
1-4 在C++语言中引入内联函数(inline function)的主要目的是降低空间复杂度,即缩短目标代码长度。 (2分) F

2-1

关于new运算符的下列描述中,()是错误的。 (2分)

它可以用来动态创建对象和对象数组;
使用它创建的对象或对象数组可以使用运算符delete删除;
使用它创建对象时要调用构造函数;
√使用它创建对象数组时必须指定初始值;

2-2关于delete运算符的下列描述中,()是错误的。 (2分)

它必须用于new返回的指针;
使用它删除对象时要调用析构函数;
√对一个指针可以使用多次该运算符;
指针名前只有一对方括号符号,不管所删除数组的维数。

2-3 以下程序中,new语句干了什么。 (2分)
int** num;
num = new int* [20];

分配了长度为20的整数数组空间,并将首元素的指针返回。
分配了一个整数变量的空间,并将其初始化为20。
√分配了长度为20的整数指针数组空间,并将num[0]的指针返回。
存在错误,编译不能通过。

2-4 以下程序存在的问题是: (2分)

void fun()
{
int *num1, *num2;
num1 = new int[10];
num2 = new int[20];
num1[0] = 100;
num2[0] = 300;
num1 = num2;
delete [] num1;
}

num2不能给num1赋值
num2最初指向的空间没有释放
√num1最初指向的空间没有释放
程序没有问题

2-5 设void f1(int * m,long & n);int a;long b;则以下调用合法的是()。 (2分)

f1(a,b);
√f1(&a,b);
f1(a,&b);
f1(&a,&b);

2-7 一个函数功能不太复杂,但要求被频繁调用,选用( )。 (2分)

√内联函数
重载函数
递归函数
嵌套函数

2-8 重载函数在调用时选择的依据中,错误的是()。 (2分)

函数的参数
参数的类型
函数的名字
√函数的类型

2-9 在( )情况下适宜采用inline定义内联函数。 (2分)

函数体含有循环语句
函数体含有递归语句
√函数代码少、频繁调用
函数代码多、不常调用

2-11 下面说法正确的是()。 (2分)

内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
√内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
类的内联函数必须在类体内定义
类的内联函数必须在类体外通过加关键字inline定义

2-12 对定义重载函数的下列要求中,( )是错误的。 (2分)

要求参数的个数不同
要求参数中至少有一个类型不同
√要求函数的返回值不同
要求参数个数相同时,参数类型不同

1-1重载函数可以带有默认值参数,但是要注意二义性。 (1分) T
2-1 命名空间应用于: (2分)

在类外定义类的成员函数
√避免各个不同函数、变量等的名称冲突
提高代码的执行速度
以上答案都正确

2-2如果在函数中定义的局部变量与命名空间中的变量同名时,()被隐藏。 (2分)

函数中的变量
√命名空间中的变量
两个变量都
两个变量都不

2-3如果程序中使用了using命令同时引用了多个命名空间,并且命名空间中存在相同的函数,将出现: (2分)

√编译错误
语法错误
逻辑错误
无法判定错误类型

2-4要说明标识符是属于哪个命名空间时,需要在标识符和命名空间名字之间加上: (2分)

√::
->
.
( )

2-5如果默认参数的函数声明为“ void fun(int a,int b=1,char c=’a’,float d=3.2);”, 则下面调用写法正确的是( )。 (2分)

fun();
√fun(2,3);
fun(2, ,'c',3.14)
fun(int a=1);

2-1 给定以下类声明,哪个成员函数可能改变成员变量data? (2分)

class A {

public:

void f1 (int d);
void f2 (const int &d);
void f3 (int d) const;

private:

int data;

};

f1
f2
f3
√f1和f2

对于常成员函数,无论是声明还是定义,都需要加const限定,常成员函数可以访问const数据成员,也可以访问非const数据成员,注意是只是访问,但不可以修改。反过来,const数据成员可以被const成员函数访问,也可以被非const的成员函数访问。
参考const详细解释

2-5

在面向对象的软件系统中,不同类对象之间的通信的一种构造称为_。 (2分)

属性
封装
类
√消息

2-3 设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用]时: (2分)

将执行复制构造函数来初始化形参x
仅在实参为常量时,才会执行复制构造函数以初始化形参x
√无需初始化形参x
仅在该函数为A类的友元函数时,无需初始化形参x

2-4 所有类都应该有: (2分)

构造函数
析构函数
√构造函数和析构函数
以上答案都不对

1-1 在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。 (1分)T
【protected除了自己可以访问,允许派生类的访问】

2-4 建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为 (2分)

√abc
acb
cab
cba

2-1 下列有关继承和派生的叙述中,正确的是: (2分)

派生类不能访问通过私有继承的基类的保护成员
多继承的虚基类不能够实例化
√如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现

关于函数模板,描述错误的是。 (2分)

√函数模板必须由程序员实例化为可执行的函数模板
函数模板的实例化由编译器实现
一个类定义中,只要有一个函数模板,则这个类是类模板
类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

1-1 可以通过下标随机访问向量vector中的元素。 (1分) T
1-2 当向量对象的内存用完之后,就会产生越界错误。 (1分) F
1-4 In C++, only existing operators can be overloaded. (1分) T
1-1 虚函数是用virtual 关键字说明的成员函数。 (1分) T
1-2 动态绑定是在运行时选定调用的成员函数的。 (1分)T
1-3 构造函数可以声明为虚函数。 (1分) F
1-4 构造函数可以声明为纯虚函数。 (1分) F
1-5 虚函数不能是类的静态成员。 (1分)T
1-6 重定义虚函数的派生类必须是公有继承的。 (1分)T
1-7作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。 (1分)T
2-4 虚析构函数的作用是。 (2分)

虚基类必须定义虚析构函数
类对象作用域结束时释放资源
√delete动态对象时释放资源
无意义

1-1 记录流的当前格式化状态标志字中的每一位用于记录一种格式,这种格式是不能被设置或清除的。 (5分)F
1-2设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout。 (5分)T
1-3 操纵符本身是一个对象,它可以直接被提取符或插入符操作。 (5分)T
1-4get()函数不能从流中提取终止字符,终止字符仍留在流中。getline()函数可以从流中提取终止字符,但终止字符被丢弃。(5分)T
1-5使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象. (5分)T
1-6 打开ASCⅡ码流文件和二进制流文件时,打开方式是相同的。 (5分)F
1-7 read()和write()函数可以读写文本文件,也可以读写二进制文件。 (5分)T
1-8 seekg()函数和seekp()函数分别用来定位读指针和写指针的。如果使用seek()函数可以同时定义读写指针。 (5分) F
2-1

下面是关于ios 类的叙述,正确的是( )。 (2分)

√它是istream 类和ostream 类的虚基类
它只是istream 类的虚基类
它只是ostream 类的虚基类
它是iostrearm 类的虚基类

2-2

关于read()函数的下列描述中,正确的是( )。 (2分)

该函数只能用来从键盘输入中获取字符串
该函数所获取的字符多少是不受限制的
该函数只能用于文本文件的操作中
√该函数只能按规定读取所指定的字符数

2-3

当使用ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。 (2分)

√ios::in
ios::out
ios::in|ios::out
ios::binary

2-4

下列函数中,( )是对文件进行写操作的。 (2分)

get
read
seekg
√put

2-5 在C++中,打开一个文件,就是将整个文件与一个( )建立关联,关闭一个文件,就是取消这种关联。 (2分)

类
√流
对象
结构

2-6 下列打开文件的表达式中,错误的是: (2分)

ofstream ofile; ofile.open(“C:\vc\abc.txt”,ios::binary);
fstream iofile;iofile.open(“abc.txt”,ios::ate);
ifstream ifile (“C:\vc\abc.txt”);
√cout.open(“C:\vc\abc.txt”,ios::binary);

2-7 以下关于文件操作的叙述中,不正确的是: (2分)

打开文件的目的是使文件对象与磁盘文件建立联系
√文件读写过程中,程序将直接与磁盘文件进行数据交换
关闭文件的目的之一是保证将输出的数据写入硬盘文件
关闭文件的目的之一是释放内存中的文件对象

2-2 What is wrong in the following code?

vector v; v[0] = 2.5; (2分)

The program has a compile error because there are no elements in the vector.
The program has a compile error because you cannot assign a double value to v[0].
√The program has a runtime error because there are no elements in the vector.
The program has a runtime error because you cannot assign a double value to v[0].

1-1 将构造函数说明为纯虚函数是没有意义的。 T

1-1 抽象类是指一些没有说明对象的类。 (1分)F
1-2 在C++语言中引入内联函数(inline function)的主要目的是降低空间复杂度,即缩短目标代码长度。 (1分) F
1-3 重载函数可以带有默认值参数,但是要注意二义性。 (1分) T
1-4 使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象 (1分)T
1-5 因为静态成员函数不能是虚函数,所以它们不能实现多态。 (1分)T
1-6 对单目运算符重载为友元函数时,可以说明一个形参。而重载为成员函数时,不能显式说明形参。 (1分)T
1-7 以app 方式打开文件时,当前的读指针和写指针都定位于文件尾。 (1分)T
1-8 重载operator+时,返回值的类型应当与形参类型一致。 比如以下程序中,operator+的返回值类型有错:

class A {

int x;

public:

A(int t=0):x(t){ }

int operator+(const A& a1){ return x+a1.x;  }

}; (1分) F
1-9 流的状态包含流的内容、长度和下一次提取或插入操作的当前位置。 (1分)T
1-10 使用提取符(<<)可以输出各种基本数据类型的变量的值,也可以输出指针值。 (1分)T
2-7 对于常数据成员,下面描述正确的是: (2分)

常数据成员可以不初始化,并且不能更新
√常数据成员必须被初始化,并且不能更新
常数据成员可以不初始化,并且可以被更新
常数据成员必须被初始化,并且可以更新

2-9 A function that is associated with an individual object is called __. (2分)

a static function
a class function
√an instance function
an object function
  • 32
    点赞
  • 196
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值