自考C++程序设计2017年4月试题及答案解析
-
定义一个生日类,数据成员有年、月、日。定义一个人员类,数据成员有姓名、性别、生日。人员类中的生日是生日类的对象,两个类都有构造函数和显示函数。在主函数中声明一个人员类对象,屏幕显示其数据。
-
#include ﹤iostream﹥
using namespace std;
void sort( int L[ ], int n)
{
int i, k, flag, temp;
flag=n-1;
while( flag﹥0)
{
k=flag -1;
flag=0;
for(j=0; j﹤=k; j++)
{
if(L[j]﹥L[j+1])
{
temp=L[j];
L[j]=L[j+1];
L[j+1]=temp;
flag =j;
}
}
}
}
void main( )
{
int array[4]={7,2,3,4};
sort( array, 4);
cout ﹤﹤"The sorted numbers:";
for(int i=0; i﹤4; i++)
cout ﹤﹤ array[i];
}
-
#include ﹤iostream﹥
using namespace std;
class x
{protected: int a;public: x( ) {a=1; }
};
class x1;
virtual public x
{
public:
x1( )
{a+=1; cout﹤﹤"x1: "﹤﹤a﹤﹤","; }
};
class x2:
virtual public x
{
public:x2( )
{a+=2; cout﹤﹤"x2: "﹤﹤a﹤﹤","; }
};
class y:
public x1,
public x2
{
public:y( )
{ cout ﹤﹤"y: "﹤﹤a﹤﹤ endl; }
};
void main( )
{
y obj;
}
-
程序运行结果为3
#include ﹤iostream﹥
using namespace std;
int main( )
{
int a=16, b=21, m=0;_________
{
case 0: m++; break;
case 1: m++ ;
switch(b%3)
{
_________
case 1: m++; break;
}
}
cout ﹤﹤m﹤﹤ endl;
return 0;
}
-
定义平面上一个点的类point,有双精度型私有数据成员横坐标x和纵坐标y,公有成员函数有写入函数input( )、求原点距离函数distance( )和显示函数show( ),请完成point( )的类图。
-
程序的运行结果为:12
#include ﹤iostream﹥
using namespace std;
class Base
{
public:
int a;Base (int i)
{
a=i;
}
};
class Derived:
public Base
{
int a;
public:
Derived(int x):
Base(x) { }
void show( )
{
_________; //输出基类数据成员a的值
}
};
void main( }
{_________d. show ( );
}
-
#include ﹤iostream﹥
using namespace std;
class F
{
public:
_________
};
double F:: operator( ) (double x, double y) const
{
retum(x+5)*y;
}
_________
{
F f;cout﹤﹤f(1.5, 2.2)﹤﹤endl;
}
-
程序在主函数中创建派生类Derived的对象obj,调用f( )函数后输出DBC
#include ﹤iostream﹥
using namespace std;
class Base
{
public:
virtual void f( )
{
cout ﹤﹤"B";
}
};
_________
{
public:
Derived( )
{
cout ﹤﹤"D";
}
virtual void f( )
{
Base:: f( );
cout ﹤﹤"C";
}
};
int main( )
{
Base *ptr;
Derived obj;
ptr=&obj;
_________
retun 0;
}
-
此程序调用 findmax( )函数,返回数组中的最大值。
include ﹤iostream﹥
using namespace std;
int findmax (int *a, int n)
{
int *p, *s;
for(p=a, s=a; p-a﹤n; p++)
if(*P﹤*s) *s=*p;
return(* s);
}
void main( )
{
int x[5]={12,2,8,47};
cout﹤﹤ findmax(x, 5)﹤﹤endl;
}
-
#include ﹤iostream﹥
using namespace std;
int main( )
{
int x=15;
while(10﹤x﹤50)
{
x++;if(x/3)
{
x ++; break;
}
}
cout﹤﹤x﹤﹤endl;
return 0;
}
-
此程序改正后的运行结果为:1 2 5 11 21
#include ﹤iostream﹥
using namespace std;
int f(int);int main( )
{
int i;
for(i=0; i﹤5; i++)
cout﹤﹤f(i)﹤﹤" ";
return 0;
}
int f(int i)
{
int k=1;
for(;i﹥0;i--)k+=i;
return k;
}
-
#include ﹤iostream﹥
using namespace std;
void swap(int &, int &);
void main( )
{
int a=5, b=10;
swap(a, b);
cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤end;
}
void swap(int x, int y)
{
int temp;
temp =x;x=y;y=temp;
}
-
C++程序中使用string类定义存储字符串的对象时,必须在程序中包含这个类的头文件,即使用语句_________。
-
以下是对类 Sample的定义
#include ﹤iostream﹥
using namespace std;
class Sample
{
public:
Sample(int val);
~Sample( );
private:
float a =2.5;
Sample( );
};
-
C++为结构动态分配内存的一般格式是“指针名=_________;”,当不再使用这个空间时必须用“delete指针名;”释放空间。
-
所谓“引用”就是将一个新标识符和一块已经存在的_________相关联,通常用于函数的参数表中或者作为函数的返回值
-
若有整型变量a=1,b=-2,c=3;则表达式a-b﹥b?c:a+b的值为_________。
-
this指针保证每个对象拥有自己的数据成员,又共享处理这些数据成员的_________。
-
若有一个Myclass类,则执行语句“MyClass obj1,obj2[2],*p”后,自动调用该类的构造函数_________次。
-
在C++中输入输出是通过流来完成的,输出操作是将一个对象的状态转换成一个_________序列。
-
C++语言中,派生类继承了基类的全部数据成员和除构造函数及_________之外的全部函数。
-
定义以下变量并假设已赋确定的值:“ char w; int x; float y; double z;”,则表达式“w*x+z-y”的数据类型是_________。
-
在类中定义和实现的函数可以成为_________,它能够加快程序执行速度。
-
重载函数必须有不同的_________。
-
源程序文档化要求程序应加注释,注释一般分为序言性注释和_________。
-
将数学表达式 写成C++语言表达式为:_________。
-
模板函数的真正代码是在源程序中_________时产生。
-
若有以下定义:double w[9];则w数组元素下标的下限是0,上限是_________。
-
设int x[3][4]; 则x数组中含有_________个int类型的数组元素。
-
C++语言中提供了3种循环语句:_________循环语句、for循环语句和do_while循环语句。
-
在“int a=10, *p=&a;”语句中,p的值是_________。
-
执行3条语句“int a, b, *c=&a; int *p=c; p=&b;”后,c指向_________。
-
一般C++语言源程序文件的后缀是.cpp;经过编译后,生成文件的后缀是.obj;经过连接后,生成文件的后缀是_________。
-
有以下程序段,其输出结果是( )#include ﹤iostream﹥using namespace std;void main( ){ char b[ ] ="Hello, you";b[5]='!';cout ﹤﹤b﹤﹤endl;}
- A.Hello, you
- B.Hello
- C.Hello! you
- D.!
-
下列关于虚函数的描述中,正确的是( )
- A.使用虚函数就一定产生多态性
- B.虚函数只能是类中的一个成员函数,但不能是静态成员
- C.一个类中仅可以声明一个纯虚函数
- D.在构造函数和析构函数中调用虚函数采用动态联编
-
考虑函数原型void pass(int x, int y=5, char z='*'),下面的函数调用中,属于不合法调用的是( )
- A.pass(5)
- B.pass(5, 8)
- C.pass(6, '#')
- D.pass(0, 0, '*')
-
下面关于对象概念的描述中错误的是( )
- A.任何对象都必须有继承性
- B.对象是属性和方法的封装体
- C.对象间的通信靠消息传递
- D.操作是对象的动态属性
-
对于下面定义的类Myclass,在函数f( )中将对象成员n的值修改为50的语句应该是( )class Myclass{ public:Myclass( int i) { n=i; }void SetNum(int x) { n=x; }private:int n;};int f( ){ Myclass *p=new Myclass(45);_________}
- A.p-﹥SetNum(50)
- B.SetNum(50)
- C.p-﹥n=50
- D.*p-﹥SetNum (50)
-
以下关于运算符重载的描述中,错误的是( )
- A.运算符重载其实就是函数重载
- B.成员运算符比友元运算符少一个参数
- C.需要使用关键字operator
- D.成员运算符比友元运算符多一个参数
-
C++语言的跳转语句中,对于beak和 continue说法正确的是( )
- A.break语句只应用于循环体中
- B.continue语句只应用于循环体中
- C.break是无条件跳转语句,continue不是
- D.break和 continue的跳转范围不够明确,容易产生问题
-
下列函数的说明中,表示纯虚函数的是( )
- A.virtual int vf(int)
- B.void f(int)=0
- C.virtual void vf( )=0
- D.virtual void vf(int) { }
-
已知:“int a=5; char c='a';”则输出语句cout﹤﹤c+1﹤﹤a﹤﹤c;的显示结果是( )
- A.65a
- B.985a
- C.98'5'a
- D.65'a'
-
下面程序的输出结果是( )#include ﹤iostream﹥using namespace std;int main( ){ int a=1, b=-2, c=3;if(a﹤b)if(b﹤0) c=0;else c+=1;cout ﹤﹤c﹤﹤endl;return 0;}
- A.0
- B.2
- C.3
- D.4
-
不能作为函数重载的判断依据的是( )
- A.const
- B.返回类型
- C.参数个数
- D.参数类型
-
下列变量命名中,非法的是( )
- A.A**LONG
- B.MyCar
- C.my_car
- D.a48
-
关于对类的描述中,错误的是( )
- A.类是创建对象的样板
- B.类是具有唯一标识符的实体
- C.类就是C语言中的结构类型
- D.类是具有共同行为的若千对象的统一描述体
-
在C++中,字符型数据在内存中的存放形式为( )
- A.原码
- B.BCD码
- C.ASCII码
- D.反码
-
友元函数的主要作用是( )
- A.提高程序的效率
- B.加强类的封装性
- C.实现数据的隐蔽性
- D.增加成员函数的种类
-
以下有关构造函数的叙述中,错误的是( )
- A.构造函数名必须和类名一致
- B.构造函数在定义对象时自动执行
- C.在一个类中构造函数有且仅有一个
- D.构造函数可以在类体内声明在类体外实现
-
以下叙述中正确的是( )
- A.类成员的定义必须放在类体内部
- B.在类中,不作特别说明的数据成员均为私有类型
- C.在类中,不作特别说明的数据成员均为公有类型
- D.类成员的定义必须是成员变量在前,成员函数在后
-
若有定义int *p= new int(0),则下列说法正确的是( )
- A.系统用指针变量p来表示所指整型变量
- B.声明一个指针变量p,指向名为new的存储单元
- C.系统为指针变量p分配一个整型数据的存储空间
- D.通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量
-
以下说法中不正确的是( )
- A.C++程序中必须有一个主函数main( ),而且是从main( )的第一条语句开始执行
- B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的
- C.主函数可以在任何地方出现
- D.主函数必须出现在固定位置
-
以下有关类与对象的叙述中,错误的是( )
- A.对象是类的一个实例
- B.一个类可以有多个对象
- C.任何一个对象都归属于一个具体的类
- D.只要是某个类的对象,那么该对象就可以访问这个类的所有成员