Untitled Document

一、 填空题（25小题，共50分）
（以下每小题1分，共10分）
1． 在C++中，函数的参数有两种传递方式，它们是值传递和 地址或指针或引用传递 。
2． 当一个成员函数被调用时，该成员函数的 this指针 指向调用它的对象。
3． 在基类和派生类中，派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时，如果没有 作用域分隔符限定时 ，对此数据成员的访问将出现歧义。
4． 拷贝构造函数使用 引用 作为参数初始化创建中的对象。
5． 在公有继承的情况下，基类数据成员在派生类中的访问权限 保持不变 。
6． 描述命题"A小于B或小于C"的表达式为 A<B||A<C。
7． 用new申请某一个类的动态对象数组时，在该类中必须能够匹配到 没有形参的或缺省参数 构造函数，否则应用程序会产生一个编译错误。
8． 静态数据成员在类外进行初始化，且静态数据成员的一个拷贝被类的所有对象 共享 。
9． 为了避免可能出现的歧义，C++对if…else语句配对规则规定为：else总是与 与最近的if 配对。
10． 设"int a=3,b=4,c=5;"，表达式"（a+b）>c&&b==c"的值是 0 。

（以下每小题2分，共20分）
11． 面向对象的程序设计有四大特征，它们是抽象、封装、 继承 、 多态 。
12． 在Visual C++中，定义重载函数时，应至少使重载函数的参数个数或参数类型 不同 ；在基类和派生类中，成员函数的覆盖是指 派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同 。
13． 构造函数与析构函数除功能不同外，在定义形式上，它们的区别还包括构造函数名与类名相同，而析构函数名是在类名前加一个~、 析构函数没有参数 、 析构函数可以定义为虚函数 。
14． 动态联编要满足两个条件，它们是 被调用的成员函数是虚函数 、 用指针或引用调用虚函数 。
15． 在C++类中，有一种不能定义对象的类，这样的类只能被继承，称之为 抽象类 ，定义该类至少具有一个 纯虚函数 。
16． 在C++类中，const关键字可以修饰对象和成员函数，const对象不能 被修改 ，const成员函数不能 修改类数据成员 。
17． 举出C++中两种用户自定义的数据类型： 类 、 枚举 。
18． C++中没有字符串类型，字符串是通过 字符数组 来表示的，每一个字符串都有一个结尾字符 \0 。
19． C++中没有输入输出语句，输入输出是通过 输入输出库 实现的， 写出一条打印整型变量n的输出语句：cout<<n;
20． 举出C++中两种代码复用的方式： 继承 、 复用 。

（以下每小题4分，共20分）
21． 下面程序的运行结果是3。
#include <stdio.h>
void main()
{
char a='a',b='j';
float x;
x=(b-a)/('F'-'A');
printf("%d\n",(int)(3.14*x));
}
22． 下面程序的运行结果是2 5 8 11 14。
#include "iostream.h"
void main( )
{
int i=1;
while (i<=15){
i++;
if (i%3!=2) continue;
else cout <<"i="<<i<<endl;
}
}
23． 下面程序的运行结果是________。
#include "iostream.h"
class test
{
private:
int num;
float fl;
public:
test( );
int getint( ){return num;}
float getfloat( ){return fl;}
~test( );
};

test::test( )
{
cout << "Initalizing default" << endl;
num=0;fl=0.0;
}

test::~test( )
{
cout << "Desdtructor is active" << endl;
}

void main( )
{
test array[2];
cout << array[1].getint( )<< " " << array[1].getfloat( ) <<endl;
}

Initalizing default
Initalizing default
0 0
Desdtructor is active
Desdtructor is active

24． 下面程序的运行结果是________。
#include <iostream.h>
class A
{
public:
A(){cout<<"A::A() called.\n";}
virtual ~A(){cout<<"A::~A() called.\n";}
};

class B:public A
{
public:
B(int i){
cout<<"B::B() called.\n";
buf=new char[i];}
virtual ~B()
{
delete []buf;
cout<<"B::~B() called.\n";
}
private:
char *buf;
};

void fun(A *a)
{
delete a;
}

void main()
{
A *a=new B(15);
fun(a);
}
A::A() called.
B::B() called.
B::~B() called.
A::~A() called.

25． 下面程序的运行结果是________。
#include <stdio.h>
int a[ ]={1,3,5,7,9};
int *p[ ]={a,a+1,a+2,a+3,a+4};
void main( )
{
printf("%d\t%d\t%d\n",a[4],*(a+2),*p[1]);
printf("%d\t%d\t%d\n",**(p+1)+a[2],*(p+4)-*(p+0),*(a+3)%a[4]);
}
9 5 3
8 4 7