每日一练—C++专项练习 7.17

1、以下数据中,不正确的数值或字符常量是()

字符常量:单引号括起来的的单个普通字符或转义字符

A、8.9e1.2    B、10    C、0xff00   D、82.5

其中B,D属于正确的十进制数值,C属于十六进制数值。而对于A来说,e前面必须有数,e后面必须为整数。

2、下列选项中合法的用户标识符是()

A、long   B、_2Test   C、3Dmax  D、A.dat

A long属于基本数据类型,系统定义的,不可作为用户标识符

B _2Test可以作为用户标识符,用户标识符可以以大小写字母开头,下划线开头

C 3Dmax错误,不能以数字开头,但是数字可作为用户标识符的一部分

D A.dat 用户标识符不能出现.,因为.成员访问符,不能出现在用户标识符中。

3、下列叙述不正确的是()

A、一个好的程序应该有详尽的注释

正确,“好”有不同的评判标准,一般是要求程序的健壮性,鲁棒性。所以不能说它完全对。

B、在C程序中,赋值运算符的优先级最低

我不太确定,召唤运算符优先级表

逗号运算符优先级最低。所以错误

C、在C程序中,j++是一条赋值语句。

正确,j++实现的功能就是j = j+1;

D、C程序中,#include和#define均不是C语句

#include和#define属于预处理命令,与C语言的语法完全独立的。

4、不能作为重载函数的调用的依据是()

A、参数个数   B、参数类型  C、函数类型  D、函数名称

选D,重载函数的名称是一样的。

正确答案选C

C++允许声明同名函数实现不同的功能,但这些函数的形式参数(个数,类型或者顺序)必须不同。函数名称是作为重载函数的判断依据。我认为没问题,但是题目说的是调用的依据,我觉得调用和函数名称没关系。调用怎么会和函数名称没关系呢?

5、下列程序的输出结果为()

#include<iostream>
using namespace std;

int fun(int n)
{
    if(n<1)
        return 1;
    else
        return n+fun(n-1);
    return 0; 
}

int main()
{
    cout<<fun(5)<<endl;
    return 0;
}

这是一个递归调用,fun(5) = 5+fun(4) = 5+4+fun(3) = 5+4+3+fun(2) = 5+4+3+2+fun(1) = 5+4+3+2+1+fun(0) = 5+4+3+2+1+1 = 16

6、下列哪种情况,B不能隐式转换为A?

A、class B:public A{}

B、class A:public B{}

C、class B{operator A();}

D、class A{A(const B&);}

不会

7、关于中间件特点的描述,不正确的是()

A、中间件运行于客户机/服务机的操作系统内核中,提高内核运行效率

B、中间件应支持标准的协议和接口

C、中间件可运行于多种硬件和操作系统平台上

D、跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互

首先先了解什么是中间件。中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。相当于路由器,交换机。因为是软件,不可能运行在操作系统内核中。

8、关于C++,下列描述正确的是()

A、一个基类的声明中有纯虚函数,该基类的派生类一定不再是抽象类。

抽象类:含有纯虚函数的类叫做抽象类。如果派生类没有重新定义纯虚函数,只是继承基类的纯虚函数,则这个派生类仍然是一个抽象类,不能实例化。只有在派生类中给出基类纯虚函数的实现,就不再是抽象类了。

B、函数类型不能作为重载函数的依据

和第4题一样,可以。

C、静态数据成员不是所有对象所公有的

D、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

内联函数是指用inline关键字修饰的函数。内联函数具有函数的结构,而编译后却不具备函数的性质。是在编译时插入的。

9、有这样一个类

class Eye
{
    public:
    void Look(void);
}

现在希望定义一个Head类,也想实现Look功能,应该使用什么方法,实现代码重用。

答:当然是继承的方法,Head作为Eye的子类,可以直接调用父类的public函数Look。

错误,是组合。组合是一个类里面的数据成员是另一类的对象,即内嵌其他类的对象作为自己的成员。

实现如下:

10、

class ClassA
{
    public:
    virtual ~ ClassA()
    {
    }
    virtual void FunctionA()
    {
    }
};
class ClassB
{
    public:
    virtual void FunctionB()
    {
    }
};
class ClassC: public ClassA, public ClassB
{
    public:
};
ClassC aObject;
ClassA *pA = &aObject;
ClassB *pB = &aObject;
ClassC *pC = &aObject;

假设定义了ClassA *pA2,下列代码正确的是()

A、pA2 = static_cast<ClassA*>(pB)

B、void* pVoid=static_cast<void*>(pB); pA2=static_cast<ClassA*>(pVoid);

C、pA2=pB;

D、pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));

猜你喜欢

转载自blog.csdn.net/weixin_42095973/article/details/81075073