1、 计算机专业 面向对象程序设计 试题 一、单项选择题(每小题1分,共20分) 1.C++源程序文献的缺省扩展名为( A )。 A.cpp B.exe C.obj D.lik 2.x>0||y==5的相反表达式为( B )。 A. x<=0 || y!=5 B.x<=0 && y!=5 C. x>0 || y!=5 D.x>0 && y==5 3.在下面的字符数组定义中,( D )的语法错误。 A.char a[20]=”abcdefg”; B.char a[]=”x+y=55.”
2、 C.char a[15]; D.char a[10]=’5’; 4.以下对的的函数原型语句是( A )。 A.double fun(int x,int y); B.double fun(int x;int y); C.double fun(int x=5,int y); D.double fun(int x,y); 5.软件产品可被所有或部分重用于新的应用的能力叫做软件的( B )。 A.可维护性 B.可复用性 C.兼容性 D.对的性; 6.在多文献结构的程序中,通常把具有main
3、)函数的文献称为( A )。 A.主文献 B. 实现文献 C.程序文献 D.头文献 7.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表达,包含的指针域用next表达,链队的队首指针用elemHead表达,队尾指针用elemTail表达,若链队为空,则进行插入时必须把新的地址赋给( C )。 A.elemHead B.elemTail C.elemHead和elemTail D. elemHead或elemTail 8.假定AB为一个类,则执行“AB a,b(2),c[3],*p=&a;”语句时共调用该类无参构造函
4、数的次数为( 4 )次。 A.5 B.6 C.3 D.4 9.引入友元的重要目的是为了( C )。 A. 增强数据的安全性 B. 提高程序的可靠性 C. 提高程序的效率的灵活性 D. 保证类的封装性 10.假定类B是在类A的基础上扩充而得到的,那么就称( B )。 A. 类A为基类或父类,类B为超类或子类 B. 类A为基类、父类或超类,类B为派生类或子类 C. 类A为派生类,类B为基类 D. 类A为派生类或子类,类B为基类、父类或超类 二、填空题(每空2分,共20分) 1.由函数原型语句“int fun1(v
5、oid);”可知,该函数的返回类型为整型,该函数带有 0 个参数。 2.假定x是一个逻辑量,则x||false的值与x的值 相同 。 3.作为语句桔标号使用的C++保存字case和default只能用于 switch 语句的定义体中。 4.对一个二维字符数组a进行初始化的数据表为{“123”,”456”,”789”},则a[1]元素相应的字符串为 456 。 5.NULL是一个符号常量,通常作为空指针值,它的具体值为 ‘\0’。 6.内联函数的定义模块与所属的 类 模块必须放在同一个文献中。 7.一个类的 构造函数 实现对该类对象进行初始化的功能。 8.假定为类AB定义了一
6、个构造函数“AB(int aa=0):a(aa){ }”,则定义该类的对象时,可以有 2种不同的定义格式。
9.重载抽取运算符>>时,其运算符函数的返回值类型应当是 istream & 。
10.若多个基类及其派生类中都定义了同名的函数成员,要访问一个类中该成员函数时,就需要在函数名前加上 类名 和 类区分符:: 。
三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。(每小题5分,共20分)
1.下面程序算出的值。
#include
7、s=0;
int i,j=1;
cout<<"输入x的值:";
cin>>x;
for(i=1; ⑴ ;i++){
p1*=x;
p2*= ⑵ ;
s+=j*p1/p2;
j= ⑶ ;
}
cout<
8、L; ⑵ )
cout<< ⑶ <<' ';
cout<
9、 一个带类的程序如下: class A{ int a,b; public: ⑴ //定义构造函数,使参数aa和bb的默认值为0, //在函数体中用aa初始化a,用bb初始化b }; void main(){ A *p1,*p2; ⑵ ;//调用无参构造函数生成由p1指向的动态对象 ⑶ ;// 调用带参构造函数生成由p2指向的动态对象, //使a和b成员分别被初始化为4和5 } ⑴A(int aa=0,int bb=0){a=aa;b=bb;} ⑵
10、p1=new A
⑶p2=new A(4,5)
四、理解问答题,写出前三小题的程序运营结果和指出后两小题的程序(或函数)所能实现的功能。(每小题6分,共30分)
1. #include 11、 '< 12、Output(){cout<
class Base
{
public:
Base(int i,int j){x0=i;y0=j;}
vo 13、id Move(int x,int y){x0+=x;y0+=y;}
void Show(){cout<<"Base("< 14、y;
};
void main()
{
Base b(1,2);
b.Show();
Derived d(3,4,10,15);
d.Move(5,6);
d.Show();
}
运营结果:Base(1,2)
NEXT(18,25)
4. #include 15、
}
程序功能:由键盘输入一个正整数N,计算并输出从1到N的各整数平方之和。
5. int f(const char *s)
{
int i=0;
while(*s++)i++;
return i;
}
程序功能:记录字符串中所包含的字符个数。
五、编程题(每小题5分,共10分)
1. 根据下面函数原型编写一个函数,求出并返回由字符指针s所指向的字符串中包含的字符’a’和’A’的总个数。
int void[w2] fun(char *a);
int fun( char *a)
{
int i=0;
for(;*a;*a++)if 16、a=='a'||*a=='A')i++;
return i;
}或
int fun( char *a)
{
int i=0;
do{if(*a=='a'||*a=='A')i++;}while(*a++);
return i;
}
2. 根据下面类中拷贝构造函数的原型写出它的类外定义。
#include 17、 n=nn;
a=new int [n];
for(int i=0;i






