自考C++程序设计模拟试题及答案(五)
-
编写函数模板voidchange(t&i,T&),能够实现整型数据、实型和字符串的交换,并编写测试的主函数。
-
给出下面程序的输出结果。
#include
class Test
{int x,y;
public:
Test(int i,int j=0)
{x=i;y=j;}
int get(int i,int j)
{return i+j;}
};
void main()
{Test t1(2),t2(4,6);
int (Test::*p)(int,int=10);
p=Test::get;
cout<<(t1.*p)(5)<
Test*p1=&t2;
cout<<(pl->*p)(7,20)<
}
-
给出下面程序的输出结果。
#include
class A
{public:
A()
Cout<<"A构造函数\n";fun();}
virtual void fun()
{cout<<"A::fun()函数\n";}
};
class B:public A
{public:
B()
{cout<<"B构造函数\n";fun();}
void fun(){cout<<"B::fun()calle函数\n";}
};
void main()
{B d;}
-
下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
Der1 called!
Der2 called!
#include
class Base
{public:
____________;
};
class Der1:public Base
{public:
void display(){cout<<"Der1 called!"<
};
class Der2:public Base
{public:
void display(){cout<<"Der2 called!"<
};
void fun(____________)
{p->display();}
void main()
{Der1 b1;
Der2 b2;
Base*p= &bl;
fun(p);
p= &b2;
fun(p);
}
-
运行结果如下
AAAbBB
BB
CCC
程序如下:
#include
void main()
{char ch[3][4]="AAA","BB","CCC",(*q)[4]=ch,*p;
//ch是二维数组,q是指向一维数组的指针,并且一维数组每行只有4个字符
//q取得二维数组ch首地址
inti;
_________
*p='b';
_________
for(i=0;i<3;i++)
cout<
}
-
在下划线处填上缺少的部分。
#include
class A
{int a,b;
public:
_________//定义构造函数,使参数i和的默认值为0
{a=i;b=j;}在函数体中用i初始化a,用j初始化b
};
main()
{A*p;
_________;//调用带参构造函数生成由p指向的动态对象
//使a和b成员分别被初始化为4和5
}
-
下面程序运行的结果是:5+10=15。
#include
class Test
{private:
int x,y;
Public:
Test(){x=y=0;}
void Setxy(int x, int y){__________}
void show(){__________}
};
void main()
{Test ptr;
ptr.Setxy(5,10);
ptr.show()
}
-
#include
class Add
{private:
int sum;
public:
void plus(int,int);
};
void Add::plus(int x,int y)
{sum=x+y;
void main()
{Add add;
{add.plus(2,3);
cout<
}
-
在下面程序的横线处填上适当内容,使程序执行结果为:
S=2
S=5
S=9
#include
void sum(int i)
{static int s;
____________
cout<<"s="<
}
void main(void)
{int i;
for(i=0;____________)
sum(i);
}
-
#include
class A
{int i;
public:
virtual void fun()=0;
A(int a)
{i=a;}
};
class B: public A
{int j;
public:
void fun()
{cout<<"B::fun()\n";}
B(int m,int n=0:j(n){};
};
void main()
{A*pa;
B b(7);
pa=&b;
}
-
#include
class test{
private:
int x,y;
public:
void test1(int a,int b){x=a;y=b;}
int max();
};
int test:max()
{if(x>y)return x;
else return y;}
void main()
test a;
a.testl(1,3);
cout<
}
-
#include
void f(int*a,int n)
{int i=0,j=0;
int k=0;
for(;i
{k=a[i]:
a[i]=a[n-i-1];
a[n-i-1]=k;
}
}
void show(int a[],int n)
{for(int i=0;
cout<
cout<
}
void main()
{int p[5];
int i=0, n=5;
for(;i<5;i++)
{p[i]=i;}
f(*p,n);
show(p,n);
}
-
cout是C++中的标准输出流对象,它通常代表_________。
-
#include
using namespace std;
class Date;
class Time
{public:
Time(int h, int m, int s)
{hour=h;minute=m;sec=s;}
void show(Date& d);
private
int hour,minute,sec;
};
class Date
{public:
Date(int m,int d,int y)
{month=m;day=d;year=y;}
void Time::show(date&):
private:
int month,day,year;
};
void Time::show(Date& d)
{cout<
cout<
}
void main()
{Time(9,23,50);
Date d1(12,20,2010);
t1.show(d1);
}
-
C++的_______允许一个派生类继承多个基类。
-
C++语言提供的基本控制结构可以分为3种类型:顺序结构、选择结构和_______。
-
结构体中,没有使用private定义的成员函数,默认为_______。
-
在程序中执行int*a= new int之后,若a为空指针,则表明_________。
-
this指针始终指向调用成员函数的_______。
-
派生类的成员一般分为两部分,一部分是_______,另一部分是自己定义的新成员。
-
在编译指令中,宏定义使用__________指令。
-
类的私有成员只能被它的成员函数和________访问。
-
带有纯虚函数的类称为抽象类,它只能作为_________来使用。
-
在C++中,利用向量类模板定义一个具有2个double的向量E,其元素均被置为0,5,实现此操作的语句是_________。
-
通过一个对象调用虚函数时,C++系统对该调用采用_______。
-
类是用户定义的类型,具有类类型的变量称作__________。
-
在C++中,编译时的多态性是通过________和模板体现的。
-
复制构造函数使用_________作为形式参数。
-
至少包含一个_______函数的类称为抽象类。
-
预处理命令以__________符号开头。
-
类的继承是指派生类继承基类的数据成员和_______。
-
对已有的运算符赋予多重含义,使同一运算符能够对不同类型的数据进行操作,称为_______。
-
下面程序运行结束后,k的值为_______。
#include
void main() {int i,j,k;for(i=0,j=10;i<=j;i++,j--) k=i+j:cout< -
下列不是描述类的成员函数的是()
- A.构造函数
- B.析构函数
- C.友元函数
- D.拷贝构造函数
-
使用输入输出操控符selw,可以控制、intmsum(,sum(20,100));()
- A.输出精度
- B.输出宽度
- C.对齐方式
- D.填充字符
-
假定一个类的构造函数为“A(int i=4,int j=0){a=i;b=j;}”,则执行“A x(1);"语句后,x.a和x.b的值分别为()
- A.1和0
- B.1和4
- C.4和0
- D.4和1
-
在C++中,源文件经编译后生成的文件扩展名为()
- A..epp
- B..h
- C..lib
- D..obj
-
设有函数模板template
Q Sum(Q x, Q y){ return(x)+(y);}则下列语句中对该函数模板的使用错误的是() - A.Sum(10,2);
- B.um(5.0,6.7);
- C.Sum(15.2f,16.0f);
- D.Sum("AB", "CD");
-
在下列成对的表达式中,运算符“/”的意义相同的一对是()
- A.8/3和8.0/3.0
- B.8/3.0和8/3
- C.8.0/3和8/3
- D.8.0/3.0和8.0/3
-
下列有关继承和派生的叙述中,正确的是
- A.派生类不能访问基类的保护成员()
- B.作为虚基类的类不能被实例化
- C.派生类应当向基类的构造函数传递参数
- D.虚函数必须在派生类中重新实现
-
若公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()
- A.私有成员
- B.公有成员
- C.保护成员
- D.保护成员或私有成员
-
有如下程序段:int*p,a[7]={-5,0,4,2,7,1};p=a+6;执行该程序段后,*p的值()
- A.4
- B.2
- C.1
- D.0
-
对于任意一个类,析构函数的个数最多为()
- A.0
- B.1
- C.2
- D.3
-
类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将()
- A.调用类A中的函数func()
- B.调用类B中的函数func()
- C.根据p所指的对象类型而确定调用类A中或类B中的函数func()
- D.既调用类A中函数,也调用类B中的函数
-
函数调用func((exp1,exp2),(exp3,exp4,ex5))中所含实参的个数为()
- A.1
- B.2
- C.4
- D.5
-
假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()
- A.x.a
- B.x.a()
- C.x->a
- D.(*x).a()
-
使用函数 setprecision(int n)必须包含的头文件是()
- A.iostream
- B.fstream
- C.ifstream
- D.iomanip
-
下列哪个编译指令不属于条件编译指令()
- A.#if
- B.#else
- C.#endif
- D.#error
-
关于动态联编的描述中,错误的是()
- A.动态联编是以虚函数为基础的
- B.动态联编运行时确定所调用的函数代码
- C.动态联编调用函数操作是指向对象的指针或对象引用
- D.动态联编是在编译时确定操作函数
-
关于类的析构函数调用的说法正确的是()
- A.类创建时
- B.创建对象时
- C.删除对象时
- D.不自动调用
-
下列关于向量的叙述,不正确的是()
- A.向量的长度可变
- B.向量有返回无需再次分配内存就能容纳的对象个数的成员函数capacity()
- C.如果数量已满,当增加一个元素时,向量成员函数capacity()的长度自动增加
- D.如果数量已满,当需要增加一个元素时,capacity()的长度每次自动增加一个
-
设函数 void inc(int)的功能是将形参加1,如有型变量int i=10;,则执行inc(i)后,的值为()
- A.9
- B.10
- C.1
- D.12
-
使用下列哪个流格式控制符可设置转换基数为八进制()
- A.dec
- B.oct
- C.hex
- D.endl