java基础选择题--11
1. 以下保留字( )不能出现在说明虚函数原型的语句中。
A.static
B.operator
C.void
D.const
参考答案:A
2. 一个类中只能定义一个析构函数。( )
A.对
B.错
参考答案:A
解释:
在C++中,一个类只能有一个析构函数。析构函数在对象生命周期结束时被自动调用,用于执行清理工作,如释放资源。
3. 设B类是A类的派生类。当创建一个B类的对象时,构造函数的调用顺序是( )。
A.视定义时A类和B类出现的位置
B.先调用B类的构造函数,然后调用A类的构造函数
C.先调用A类的构造函数,然后调用B类的构造函数
D.不调用A类的构造函数
参考答案:C
4. 程序控制语句主要包括选择、循环和( )。
A.跳转
B.注释
C.条件编译
D.宏定义
参考答案:A
7. 下列运算符中,优先级最高的是( )。
A.&&
B.++
C.+
D.*
参考答案:B
8. 以下正确的说法是( )。
A.系统不允许用户重新定义标准库函数
B.用户调用标准库函数前,必须重新定义
C.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中
D.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
参考答案:D
9. 程序在调用重载函数时,根据( )区分到底要调用哪个函数?
A.函数名
B.返回值类型
C.参数个数和类型
D.以上都可以
参考答案:C
10. 设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是( )
A.x( int m){ ... }
B.void x( int m){ ... } //void
C.x( int m, int n){ ... }
D.x( int h,int m,int n){ ... }
参考答案:B
11. 虚基类是用来解决多继承中公共基类在派生类中产生多份基类成员的问题。( )
A.正确
B.错误
参考答案:A
12. 下列类中( )是输入/输出流类iostream的派生类。
A.fstream
B.ofstream
C.ifstream
D.ostream
参考答案:A
13. 下面函数原型声明中,( )声明了fun为纯虚函数。
A.void fun( )=0;
B.virtual void fun( )=0;
C.virtual void fun( );
D.virtual void fun( ){};
参考答案:B
在C++中,纯虚函数是一种特殊的虚函数,它在基类中被声明但没有定义。纯虚函数在类定义中使用 = 0 语法来标识。
现在,我们来看给定的选项:
A. void fun() = 0;
这个声明缺少了 virtual 关键字,所以它不是一个纯虚函数声明。
B. virtual void fun() = 0;
这个声明正确地使用了 virtual 和 = 0 语法来声明一个纯虚函数。
C. virtual void fun();
这个声明声明了一个虚函数,但没有使用 = 0,所以它不是一个纯虚函数。
D. virtual void fun() {};
这个声明不仅声明了一个虚函数,还提供了函数的定义体(即使它是空的)。由于它提供了定义,所以它也不是一个纯虚函数。
因此,正确答案是B。
14. 不同的函数中可以使用相同名字的变量。( )
A.对
B.错
参考答案:A
15. 下列代码的执行结果是( )。 public class A{public static void main(String[]args){System.out.println(5/2);}}
A.2.5
B.3
C.2
D.2.0
参考答案:C
16. 派生类中至少包含了它的所有基类的成员(除构造函数和析构函数外),在这些成员中可能有的是不可访问。( )
A.正确
B.错误
参考答案:A
17. 派生类是从基类派生出来,它不能再生成新的派生类。( )
A.正确
B.错误
参考答案:B
在面向对象编程中,特别是使用C++、Java等语言时,派生类(也称为子类或子类型)是从基类(也称为父类或超类)派生出来的,但它本身也可以被用作基类来派生新的派生类(有时称为子类的子类或孙子类)。
18. 下列的符号常量定义中,错误的定义是( )。
A.const int M=20
B.const char ch
C.const bool mark=true
D.const M=10
参考答案:B
当我们使用const来声明一个常量时,我们必须同时指定它的类型。在这里,M没有类型,所以这是无效的。
因此,错误的定义是D。const M = 10;
19. 派生类至少有一个基类。( )
A.对
B.错
参考答案:A
20. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。 ????
A. AB operator+(AB&a,AB&b)
B.AB operator+(AB&a)
C.operator+(ABa) //缺少返回类型
D.AB &operator+( ) //没有参数
参考答案:B
21. 一个Java类可以有多个父类。( )
A.错误
B.正确
参考答案:A
22. 当处理特定问题时的循环次数已知时,通常采用( )来解决。
A.while循环
B.switch语句
C.for循环
D.do循环
参考答案:C
23. C语言中scanf命令在c++中改用cin。( )
A.正确
B.错误
参考答案:A
24. 假定一条定义语句为“int a[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。???
A.x=pa[3]
B.x=a[3]
C.x=*pa+3
D.x=*(a+3)
首先,定义语句 int a[10], x, *pa = a; 做了以下几件事情:
定义了一个有10个整数的数组 a。
定义了一个整数变量 x。
定义了一个指向整数的指针 pa,并将它初始化为指向数组 a 的第一个元素。
现在,我们要找出哪个语句不能正确地将数组 a 中下标为3的元素值赋给 x。
A. x = pa[3];
这是正确的。因为 pa 指向 a 的第一个元素,所以 pa[3] 实际上就是 a[3]。
B. x = a[3];
这也是正确的。它直接引用了数组 a 的第四个元素(因为数组索引从0开始)。
C. x = *pa + 3;
这是不正确的。这个语句实际上是将 a 的第一个元素的值(即 a[0] 或 *pa)与整数3相加,而不是取得 a[3] 的值。
D. x = *(a + 3);
这是正确的。在C/C++中,数组名是一个指向其第一个元素的指针。因此,a + 3 指向 a 的第四个元素,而 *(a + 3) 就是 a[3] 的值。
所以,不正确的语句是 C. x = *pa + 3;。
25. 设x=1,y=2,z=3,则表达式y+=z--/++x的值是( )。
A.3
B.3.5
C.4
D.5
参考答案:A
。
现在,我们来看表达式 y += z--/++x:
++x 首先执行(因为它是前缀自增),此时 x 的值变为 2。
z-- 是后缀自减,但在这一步它不会立即改变 z 的值,而是返回 z 的原始值(即 3)。
然后执行除法 z--/++x,即 3/2,结果为 1(因为C/C++中的整数除法会向下取整)。
接下来,后缀自减 z-- 的副作用发生,z 的值变为 2。
最后,执行加法赋值 y += ...,即 y = y + 1,因为前面的除法结果是 1。由于 y 的初始值是 2,所以 y 的新值变为 3。
因此,表达式 y += z--/++x 的值是 3。
答案是 A.3。
26. 一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
A.函数模板
B.模板函数
C.类模板
D.模板类
参考答案:C
27. 下列关于构造函数说法不正确的是( )。
A.构造函数必须与类同名
B.构造函数可以省略不写
C.构造函数必须有返回值
D.在构造函数中可以对类中的成员进行初始化
参考答案:C
28. 已知如下代码:boolean m = true; if( m = false) System.out.println(“False”); else System.out.println(“True”);执行结果是( )。
A.False
B.True
C.None
D.出错
参考答案:B
29. 定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为( )。
A.private class MyClass extends Object
B.class MyClass extends Object
C.public class MyClass
D.public class MyClass extends Object
参考答案:CD
30. 程序中主函数的名字为( )。
A.任意标识符
B.main
C.Main
D.MAIN
参考答案:B