C++语言程序设计阶段作业一、二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++语⾔程序设计阶段作业⼀、⼆第⼀阶段作业
⼀、单项选择题(共20道⼩题,共100.0分)
1. 以下不是C++关键字的是______。
A. new
B. char
C. try
D. get
2. 判断字符型变量ch是否为⼤写英⽂字母,应该使⽤表达式()。
A. ch>='A' & ch<='Z'
B. ch<='A' || ch>='Z'
C. 'A'<=ch<='A'
D. ch>='A' && ch <='Z'
3. 设int a=3,b=2;,则++a*b的结果是()。
A. 2
B. 3
C. 8
D. 5
4. 下列⼗六进制整型常量的写法中,错误的是()。
A. 0xaf
B. 0
C. 0X1b
D. 0xAE
5. 在为类FunType重载运算符+= 时,重载函数的最后⼀个语句是
return *this;
关于这个重载函数,下列表述中错误的是()。
A. 它的名称是operator+=
B. 它的返回值类型是FunType或FunType&
C. 它的形参表只包含⼀个形参定义
D. 它是类FunType的友元函数
6. 已知针对类AX定义了⼀个唯⼀的运算符函数,使得对于AX的对象ax,表达式ax-5和5-ax都能正确求值。
有鉴于此,下列表述中错误的是()。
A. 该运算符函数是类AX的成员函数
B. 该运算符函数的形参表中有两个参数
C. 该运算符函数的函数名是operator-
D. 利⽤类AX的构造函数可将5转换成⼀个AX对象
7. 假定为类X成功地重载了++、=、-和[]等运算符,则其中肯定属于成员函数的运算符是()。
A. -和=
B. []和++
C. =和[]
D. ++和[]
8. 在下列运算符中,只能作为⼆元运算符重载的是()。
A. +
B. -
C. *
D. /
9. 以下代码的运⾏结果是()。
#include
using namespace std;
#define MINUS(x) -x
int main()
{
int a=1, b=2, c=3;
cout << MINUS(a+b)*c <
return 0;
}
A. 3
B. 5
C. -7
D. -9
10. 以下关于外部变量和外部函数的说法,错误的是()。
A. 外部变量的声明可以是引⽤性的声明
B. 静态变量和静态函数即使使⽤extern声明,它们的使⽤范围仍然被限定在定义⽂件中
C. 外部变量可以为多个源⽂件所共享
D. 外部函数和外部变量在声明时,都不能省略关键词extern
11. 下⾯程序实现的功能是()。
#include
void main( )
{
int i=1, sum(0);
loop: if(i<=100)
{
sum+=i, i++;
goto loop;
}
cout<
}
A. 输出100以内的偶数
B. 计算并输出100以内⾃然数的和
12. 下⾯程序运⾏的结果是()。
#include
using namespace std;
void main()
{
int i;
for (i=1;i<=4;i++){
if (i%2)
cout <<"*";
else continue;
cout <<"#";
}
cout <<"$"<
}
A. *$
B. $
C. #*#*$
D. *#*#$
13. 下列运算符中,优先级最⾼的是_____。
A. ++
B. []
C. %
D. &&
14. 有如下的枚举类型声明语句,声明后fri的值是_____。
enum weekday {sun=7,mon=1,tue,wed,thu,fri,sat};
A. 5
B. 6
C. 7
D. 8
15. 有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是()。
A. *p+9
B. *(p+8)
C. *p+=9
D. p+8
16. 有如下程序段:
int i=0,j=1;
int &r=i; //①
r=j; //②
int *p = &i //③
*p = &r //④
其中会产⽣编译错误的语句是()。
A. ④
B. ③
C. ②
D. ①
17. 语句int *p = &k 定义了指针p,与这个语句等效的语句序列是_____。
A. int *p; p=&k
B. int *p; p=k;
C. int *p; *p=&k
D. int *p; *p=k;
18. 要定义⼀个具有5个元素的⼀维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是_____。
A. int vect[] = {30,50,-88}
B. int vect[] = {30,50,-88,0,0}
C. int vect[5] = {30,50,-88}
D. int vect[5] = {30,50,-88,0,0}
19. 结构体和联合体的所有成员变量和成员函数均默认为_____类型。
A. public
B. private
C. protected
D. void
20. 下列关于this指针的叙述中,正确的是()。
A. 任何与类相关的函数都有this指针
B. 类的成员函数都有this指针
C. 类的友元函数都有this指针
D. 类的⾮静态成员函数才有this指针
第⼆阶段作业
⼀、单项选择题(共20道⼩题,共100.0分)
1. 下⾯是两个类的声明:
class AA
{
int x;
public:
AA(int n):x(n){}
};
class BB
{
static int a;
const int b;
AA c;
public:
BB(int, int, int);
};
在定义构造函数BB::BB(int, int, int)时,必须通过初始化列表中加以初始化的数据成员包括()。
A. a和b
B. a和c
C. b和c
D. a、b和c
2. 有如下程序:
#include
using namespace std;
class Base {
private:
void fun1() const { cout << "fun1"; }
protected:
void fun2() const { cout << "fun2"; }
public:
void fun3() const { cout << "fun3"; }
};
class Derived : protected Base {
public:
void fun4() const { cout << "fun4"; }
};
int main() {
Derived obj;
obj.fun1(); // ①
obj.fun2(); // ②
obj.fun3(); // ③
obj.fun4(); // ④
return 0;
}
其中违反类成员访问控制权限的语句是()。
A. ①②③④
B. ①②③
C. ②③④
D. ①④
3. 基类中的某些成员在派⽣类中的访问属性与派⽣⽅式⽆关,这些成员必然是原基类中的()。
A. 公有成员
B. 私有成员
C. 保护成员
D. 继承的私有成员
4. 有如下程序:
#include
using namespace std;
class Base {
public:
void fun() { cout<<"Base::fun"<
};
class Derived : public Base {
public:
void fun()
{ _____________ // 显式调⽤基类的成员函数fun()
cout<<"Derived::fun"<
}
};
程序中画线处正确的语句是()。
A. fun();
B. Base.fun();
C. Base::fun();
D. Base->fun();
5. 对于const 关键字修饰对象的说法,下列哪⼀个说法是正确的()。
A. 不能⽤⼀般的成员函数来访问
B. 可以⽤⼀般的成员函数来访问
C. 可以访问const成员函数
D. 不能访问const成员函数
6. 有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass() {++count;}
~MyClass() {--count;}
static int getCount() { return count; } private:
static int count;
};
int MyClass::count = 0;
int main() {
MyClass obj;
cout<
MyClass *ptr = new MyClass; cout << MyClass::getCount(); delete ptr;
cout << MyClass::getCount(); return 0;
}
程序的输出结果是()。
A. 121
B. 232
C. 221
D. 122
7. 有如下程序:
#include
using namespace std;
class A {
public:
static int a;
void init() { a=1; }
A( int a =2 ) {init(); a++; }
};
int A::a = 0;
A obj;
int main()
{
cout << obj.a;
return 0;
}
运⾏时输出的结果是()。
A. 0
B. 1
C. 2
D. 3
8. 下列哪⼀个只能访问静态成员变量,静态成员函数和类以外的函数和数据,⽽不能访问类中⾮静态成员变量()。
A. 静态函数
B. 虚函数
C. 构造函数
D. 析构函数
9. 关于静态数据成员的特性,下列哪⼀个说法是错误的()。
A. 静态数据成员不是所有对象所共有的
B. 静态数据成员在类体外进⾏初始化
C. 声明静态数据成员时要在变量名前加关键字static来修饰
D. 引⽤静态数据成员时,要在静态数据成员名前加类名和作⽤域运算符
10. 下列关于抽象类的表述中正确的是()。
A. 没有函数成员的类称为抽象类
B. 含有虚函数成员的类称为抽象类
C. 含有纯虚函数成员的类称为抽象类
D. ⽤abstract修饰的类称为抽象类
11. 下列关于纯虚函数的表述中正确的是()。
A. 纯虚函数是只有接⼝没有实现的虚函数
B. 含有纯虚函数的类不能⽤于定义对象,因此没有构造函数
C. 纯虚函数的声明就是在虚函数声明的尾部加上修饰“=0”
D. 派⽣类必须实现基类中声明的纯虚函数
12. 虚函数必须是类的()。
A. 成员函数
B. 友元函数
C. 静态函数
D. 析构函数
13. 有如下程序:
#include
using namespace std;
class Base
{
public:
void fun() { cout<<"Base::fun"<
};
class Derived :public Base
{
void fun()
{
______________ //显式调⽤基类的函数fun() cout<<"Derived::fun"<
}
};
程序中下画线处缺失的语句是()。
A. fun();
B. Base.fun();
C. Base::fun();
D. Base->fun();
14. 下列关于虚函数的表述中正确的是()。
A. 只有⽤virtual修饰的成员函数才是虚函数
B. 派⽣类中覆盖虚函数的重定义函数仍然是虚函数
C. 对虚函数的调⽤都是动态绑定的
D. 使⽤虚函数主要是为了提⾼运⾏效率
15. 执⾏语句序列
ofstream outfile("DATA.DAT");
if(<条件>) cout<<"OK"; else cout<<"FAIL";
后,如果⽂件打开成功,显⽰“OK”,否则显⽰“FAIL”。
由此可知,上⾯if语句的<条件>应当是()。
A. outfile.fail()或outfile
B. outfile.good()或!outfile
C. outfile.good()或outfile
D. outfile.fail()或!outfile
16. 有以下程序:
#include
#include
using namespace std;
int main(){
cout << setfill('#') << setw(4) << "OK" << 123 << endl;
return 0;
}
执⾏后的输出结果是()。
A. ##OK123
B. ##OK#123
C. OK##123
D. OK##123#
17. 对于语句cout<
A. “cout”是⼀个输出流对象
B. “endl”的作⽤是回车换
C. “<<”称做提取运算符
D. “x”是⼀个变量
18. I/O流中的预定义流对象包括()。
A. cin、cout、cerr、clog
B. cin、cout、cerr、ios
C. cin、cout、ios、clog
D. cin、ios、cerr、clog
19. 以下关于异常处理的说法,正确的是()。
A. 异常的抛出和处理,必须在同⼀个函数中完成
B. C++运⾏系统可以处理程序没有处理的异常
C. 每个try语句只能和⼀个catch语句⼀起使⽤
D. 异常不能被传播
20. 以下不属于异常处理可以解决的问题的是()。
A. 环境条件出现意外
B. ⽤户操作不当
C. 出现编译错误
D. 除数为零。