一、简答题(共 10 分)
1.(3 分)什么是引用?它与指针有什么区别?
2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?
3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?
二、填空题(每空 2 分,共 20 分)
1.C++程序中的数据可以分为两大类,其中 是指在程序执行过程中值不改变的数据; 是程序中用于存储信息的单元,并对应于某个内存空间。
2.C++中函数之间传递参数有 和 两种方式。
3.假设 x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为 ,执行表达式后 y 的值为 。
4.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
class MyClass {
private:
int *x;
public:
MyClass(int a);
~MyClass();
};
MyClass :: MyClass(int a) { ; }
MyClass :: ~MyClass() { ;}
5.在 C++中,类 A 的每一个非静态成员函数都有一个隐藏的指针类型的形参 ,它指向当前正在操作的对象,其类型为 。
三、选择题(每题 2 分,共 20 分)
1.下列常量中, 不是字符常量。
A.'\007' B. 'a' C. '\n' D. "x"
2.类的析构函数是 时被自动调用的。
A. 创建类 B. 创建对象
C. 引用对象 D. 释放对象
3.在 C++语言中,下列变量名正确的是 。
A. char 89_name; B. bool is-loan;
C. int class D. int _abc;
4.正确的 for 语句是 。已知 int i, a; A. for(i < 10) a--;
B. for(i = 0, i < 10, i++) a--;
C. for(i = 0; i < 10; i++, a--);
D. for(i = 0; i < 10; a--);
5.下列关键字中, 不是类定义中使用的关键字。
A. class B. public
C. switch D. protected
6.关于对象的描述中, 是错误的。
A.对象就是 C 语言中的结构变量
B.对象是状态和操作的封装体
C.对象之间的信息传递是通过消息进行的
D.对象是某个类的实例
7.下列关于运算符重载的描述中, 是正确的。
A.运算符重载可改变其优先级
B.运算符重载不改变其语法结构
C.运算符重载可改变其结合性
D.运算符重载可改变其操作数的个数
8.虚函数使用关键字 。
A. virtual B. static C. public D. private
9.下面的函数中,静态成员函数不能访问的是 。
A. 静态数据成员 B. 静态成员函数
C. 类以外的函数和数据 D. 非静态数据成员
10.假定 A 是一个类,那么执行语句“A a, b(3), *p;”调用了 次构造函数。
A. 2 B. 3 C. 4 D. 5
四、读程题(每题 5 分,共 20 分)
1.给出下述源程序的运行结果。
#include <iostream.h>
void fun(int i, int &j)
{ j = i * 3; } void main()
{ int a, b;
fun(3, a);
fun(9, b);
cout << "a + b = " << a + b << endl;
}
2.给出下述源程序的运行结果。
#include <iostream.h>
void main() {
int a = 5; do {
a++;
cout << ++a << endl; if(a == 10) break;
}while(a == 9 ) cout << "ok\n"; }
3.给出下述源程序的运行结果。
#include <iostream.h>
int add(int *x, int n)
{ int sum , i;
for(sum = 0, i = 0; i < n; i++) sum += *(x+i); return sum;
}
void main(){
int arr[] = {1, 3, 5, 7}; cout << add(arr, 4) << endl;
}
4.给出下述源程序的运行结果。
#include <iostream.h>
class A { public:
A() { a1 = a2 = 0; cout << "Default constructor called.\n"; }
A(int i, int j) { a1 = i; a2 = j; cout << "Constructor called.\n"; } void print() { cout << "a1 = " << a1 <<" , " << "a2 = " << a2 << endl; }
private:
int a1, a2;
};
void main() {
A x, y(3,9);
x.print();
y.print();
}
五 编程题(每题 15 分,共 30 分)
5.1有 n 个整数已按由小到大的顺序排列好,要求输入一个整数,把它插入到原有数列中, 而且仍然保持有序,同时输出新的数列。(插入时应考虑到插入的数的各种可能性,比所有的数都小;比所有的数都大;在最大数和最小数之间)
5.2定义并实现一个类 Myst,使下列语句能够正常运行。
Myst x(3.2), y(5,5), z(0.0);
z = 8.9 – y;
y = x – 6.3;
1.(3 分)什么是引用?它与指针有什么区别?
2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?
3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?
二、填空题(每空 2 分,共 20 分)
1.C++程序中的数据可以分为两大类,其中 是指在程序执行过程中值不改变的数据; 是程序中用于存储信息的单元,并对应于某个内存空间。
2.C++中函数之间传递参数有 和 两种方式。
3.假设 x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为 ,执行表达式后 y 的值为 。
4.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
class MyClass {
private:
int *x;
public:
MyClass(int a);
~MyClass();
};
MyClass :: MyClass(int a) { ; }
MyClass :: ~MyClass() { ;}
5.在 C++中,类 A 的每一个非静态成员函数都有一个隐藏的指针类型的形参 ,它指向当前正在操作的对象,其类型为 。
三、选择题(每题 2 分,共 20 分)
1.下列常量中, 不是字符常量。
A.'\007' B. 'a' C. '\n' D. "x"
2.类的析构函数是 时被自动调用的。
A. 创建类 B. 创建对象
C. 引用对象 D. 释放对象
3.在 C++语言中,下列变量名正确的是 。
A. char 89_name; B. bool is-loan;
C. int class D. int _abc;
4.正确的 for 语句是 。已知 int i, a; A. for(i < 10) a--;
B. for(i = 0, i < 10, i++) a--;
C. for(i = 0; i < 10; i++, a--);
D. for(i = 0; i < 10; a--);
5.下列关键字中, 不是类定义中使用的关键字。
A. class B. public
C. switch D. protected
6.关于对象的描述中, 是错误的。
A.对象就是 C 语言中的结构变量
B.对象是状态和操作的封装体
C.对象之间的信息传递是通过消息进行的
D.对象是某个类的实例
7.下列关于运算符重载的描述中, 是正确的。
A.运算符重载可改变其优先级
B.运算符重载不改变其语法结构
C.运算符重载可改变其结合性
D.运算符重载可改变其操作数的个数
8.虚函数使用关键字 。
A. virtual B. static C. public D. private
9.下面的函数中,静态成员函数不能访问的是 。
A. 静态数据成员 B. 静态成员函数
C. 类以外的函数和数据 D. 非静态数据成员
10.假定 A 是一个类,那么执行语句“A a, b(3), *p;”调用了 次构造函数。
A. 2 B. 3 C. 4 D. 5
四、读程题(每题 5 分,共 20 分)
1.给出下述源程序的运行结果。
#include <iostream.h>
void fun(int i, int &j)
{ j = i * 3; } void main()
{ int a, b;
fun(3, a);
fun(9, b);
cout << "a + b = " << a + b << endl;
}
2.给出下述源程序的运行结果。
#include <iostream.h>
void main() {
int a = 5; do {
a++;
cout << ++a << endl; if(a == 10) break;
}while(a == 9 ) cout << "ok\n"; }
3.给出下述源程序的运行结果。
#include <iostream.h>
int add(int *x, int n)
{ int sum , i;
for(sum = 0, i = 0; i < n; i++) sum += *(x+i); return sum;
}
void main(){
int arr[] = {1, 3, 5, 7}; cout << add(arr, 4) << endl;
}
4.给出下述源程序的运行结果。
#include <iostream.h>
class A { public:
A() { a1 = a2 = 0; cout << "Default constructor called.\n"; }
A(int i, int j) { a1 = i; a2 = j; cout << "Constructor called.\n"; } void print() { cout << "a1 = " << a1 <<" , " << "a2 = " << a2 << endl; }
private:
int a1, a2;
};
void main() {
A x, y(3,9);
x.print();
y.print();
}
五 编程题(每题 15 分,共 30 分)
5.1有 n 个整数已按由小到大的顺序排列好,要求输入一个整数,把它插入到原有数列中, 而且仍然保持有序,同时输出新的数列。(插入时应考虑到插入的数的各种可能性,比所有的数都小;比所有的数都大;在最大数和最小数之间)
5.2定义并实现一个类 Myst,使下列语句能够正常运行。
Myst x(3.2), y(5,5), z(0.0);
z = 8.9 – y;
y = x – 6.3;