自考C++程序设计模拟试题及答案(二)
-
已知交通工具类定义如下。
要求:(1)实现这个类;(2)定义并实现一个小车类car,是它的公有派生类,小车本身的私有属性有载人数,小车的函数有init(设置车轮数,重量和载人数),getpassenger(获取载人数), print(打印车轮数,重量和载人数)。
class vehicle
{protected:
int wheels;//车轮数
float weight;//重量
public:
void init(int wheels,float weight);
int get_wheels();
float get_weight();
void print();
};
void vehicle::init(int wheels,float weight)
{this->wheels=wheels
this->weight=weight
cout<
}
int vehicle::get_wheels()
{return wheels;}
float vehicle::get_weight()
{return weight;}
void vehicle:: print()
{cout<<"车轮数:"<
-
给出下面程序的输出结果。
#include
static int=3;
void fun();
void main()
{for(int i=1;i
fun();
cout<
}
void fun()
{static int a=a;
cout<(a+=2)<<‘’;
}
-
#include
class Base
{public:
Base(int x,int y)
{a=x;b=y;}
virtual void Show(){cout<<"Base:"<
private:
int a,b;
};
class Derived:public Base
{public
Derived(int x,int y,int z):Base(x,y),c(z){}
void Show(){Base::show();cout<<"Derived:"<
private:
int c;
};
void main()
{Base b(10,20);
Base *ref=&b
Derived d(30,60,90);
ref->Show()
cout<
ref=&d;
ref->show();
}
-
先为数组a输满数据,再为x输入一个数据,数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出"Not found!"标志。
#include
void main()
{int i,x,a[10],m;
cout<<"输入数组中的10个数据:”;
for(i=0;i<10;i++)
cin>>a[i];
cout<
cin>>x
cout<
for(i=0;i<10;i++)
if(_________){m=i;break;}
if(_________)
cout<
else
cout<<"Not found! \n"<
}
-
下面程序用于输出三角形的面积,请在下横线处填上正确的语句。
#include
#include
void area()
{double a,b,c;
cout<<"Input a b c:";
____________
if(a+b>c&&a+c>b&&c+b>a)
{double 1=(a+b+c)/2;
____________
cout<"The area is:"<
}
else
cout<<"Error"<
}
void main()
{area();}
-
#include
class A
{public:
void f(int i)cout<
void g(){cout<<"g\n";}
};
classB:________
{public:
void h(){cout<<"h\n";}
};
void main()
{B b;
B.f(6);
________.h();
}
-
下面程序实现将大写字母转换成小写字母的功能。
#include
void main()
{char a;
____________
cin>>a;
if(____________)
a=a+i;
cout<
}
-
#include
class T
{protected:
int p;
public:
T(int m){p=m;}
};
void main()
{T a(10);
cout<
}
-
为使下面程序输出结果为:
1*0=0
3*4=12
请在横线处填上适当的语句,以使程序完整。
#include
class A
{private:
int R1, R2;
public:
A(int r1=5, int r2=0){__________}
void show();
};
void A::show()
{__________}
void main()
{A a(1);
A b(3,4);
a.show();
b.show();
}
-
#include
class A
{private:
int x,y;
public:
void f1 (int i=0,int j=0){x=i;y=j;}
void print(){cout<
void f1 (int i=0){x=i,y=0;}
};
void main()
{A a;
a.f1(5);
a.print();
}
-
以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。
#include iostream.h>
void swap(int &a,int &b)
{a=a+b;
b=a-b;
a=a-b;
}
void main()
{int a=19,b=15;
cout<<"a="<
swap(&a,&b);
cout<<"a="<
}
-
#include
class Point
{protected:
int x,y;
public:
Point(int i,int j){x=i,y=j;}
void Showxy(){cout<<"x="<
~Point(){cout<<"DeletePoint"<
};
void main()
{Point a;}
-
C++中的输入输出是以字节_________的形式实现的。
-
#include
class A
{int a,b;
const int c;
public:
A():c(0),a(0),b(0){}
A(int aa, int bb):c(aa+bb)
{a=aa;b=bb;}
void show()
{cout<<"Const c:"<
cout<<"a,b:"<
}
};
void main()
{A a,b(1,2);
A*x=&a;
x.show();
b.show();
}
-
在继承机制下,当对象消亡时,编译系统执行析构函数的顺序是_______。
-
C++重载“=”运算符的函数名是________。
-
定义__________函数时,应在参数个数或参数类型上有所不同。
-
假定用户为类A定义了一个构造函数“A(int i=0):x(i){}”,则与该语句等_________。
-
假定用户没有给一个名字为 Sample的类定义构造函数,则系统为其隐含定义的构造函数为________。
-
执行下列程序double=3.1415926,b=3.14;cout<
-
返回向量中的第1个对象的成员函数是_______。
-
在C++的类声明中,用public关键字声明的类成员的访问权限是_________。
-
下列程序段的输出结果是_______。cout.setf(ios::showpos);cout<<509.3<
-
对虚函数的调用有两种方式:多态调用和________。
-
类模板中声明的类称为_______。
-
在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作的语句是__________。
-
假定用户没有给一个名为AB的类定义构造函数,则系统自动给出的缺省构造函数定义为________。
-
在派生类中,对类对象成员、基类成员和非类对象成员的初始化顺序是________。
-
如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行__________。
-
在C++中要创建一个文件输入流对象fn,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是__________。
-
如果表达式- -x中的“- -”是重载的类成员函数运算符,采用运算符函数调用格式时,该表达式应表示为________。
-
在派生类中实现基类成员的初始化,需要由派生类的构造函数调用________来完成。
-
采用私有派生方式,基类的public成员在派生类中是_________成员。
-
函数模板template
void A(T,T)可实例化为以下哪种形式() - A.void A(double,int);
- B.void A(char,float);
- C.void A(double,double);
- D.void A(float,int)
-
如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()
- A.a.operator++(1)
- B.operator++(a)
- C.operator++(a,1)
- D.a.operator++()
-
设int&max(int&,int&)返回两参数中较大者,如有两整型变量int a=5;int b=10;在执行max(a,b)++后,a,b的值分别为()
- A.5,10
- B.6,10
- C.5,11
- D.6,11
-
关于虚函数的描述中,正确的是()
- A.虚函数是一个静态成员函数
- B.虚函数是一个非成员函数
- C.虚函数既可以在函数说明时定义,也可以在函数实现时定义
- D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
-
在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是()
- A.一元非成员运算符
- B.一元成员运算符
- C.二元非成员运算符
- D.二元成员运算符
-
下列关于向量的描述中,不正确的是()
- A.向量是类模板,具有成员函数,但它不可以使用构造类型
- B.向量可以改变赋值目标的大小
- C.erase(iterator it)方法是删除it所指向的容器对象
- D.size()方法指返回当前向量中已经存放的对象的个数
-
在C++类体系中,不能被派生类继承的有()
- A.常成员函数
- B.静态成员函数
- C.虚函数
- D.析构函数
-
在C++中,编写一个内联函数Fun,使用int型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()
- A.int Fun(int x){return x*x;}
- B.int inline Fun(int x){return x*x;}
- C.inline int Fun(int x){return x*x;}
- D.int Fun(int x){inline return x*x;}
-
类的私有成员可在何处访问()
- A.通过子类的对象访问
- B.本类及子类的成员函数中
- C.通过该类对象访问
- D.本类的成员函数中
-
用于包含C++标准库iostream的预处理指令是()
- A.#define
- B.#include
- C.#define"iostream"
- D.#include"iostream"
- A.#define
-
关于new运算符的描述中,错误的是()
- A.它可以用来动态创建对象和对象数组
- B.使用它创建的对象或对象数组可以使用运算符delete删除
- C.使用它创建对象时要调用构造函数
- D.使用它创建对象数组时必须指定初始值
-
下列关于静态数据成员的描述中正确的是()
- A.静态数据成员是类的所有对象所共有的
- B.静态数据成员要在构造函数内初始化
- C.类的每个对象都有自己的静态数据成员
- D.静态数据成员不能通过类的对象调用
-
对于int*pa[5];的描述,正确的是()
- A.pa是一个指向数组的指针,所指向的数组是5个int型元素
- B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
- C.pa[5]表示某个数组的第5个元素的值
- D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
-
下列对模板的声明中正确的是()
- A.template
- B.template
- C.template
- D.template
- A.template
-
实现两个相同类型数加法的函数模板的声明是()
- A.add(T x,T y)
- B.T add(x,y)
- C.T add(T x,y)
- D.T add(T x,T y)
-
在继承中,派生类拥有的基类个数为()
- A.0个
- B.1个
- C.多个
- D.至少1个
-
如果类A被说明成类B的友元,则
- A.类B不一定是类A的友元
- B.类B的成员即类A的成员
- C.类的成员即类B的成员
- D.类A的成员函数不得访问类B的成员
-
用于标识十进制常量的前缀或后缀是()
- A.无前后缀
- B.后缀L或1
- C.前缀0
- D.前缀0x
-
关于类模板,下列表述中不正确的是()
- A.类模板中声明的类称为模板类
- B.类模板只能有虚拟类型参数
- C.类模板本身在编译中不会生成任何代码
- D.类模板的成员函数都是模板函数
-
包含哪种语句的函数不能声明为内联函数()
- A.变量定义
- B.if......else
- C.位操作
- D.switch