面向对象程序设计期末综合练习六程序设计.docx

上传人:b****1 文档编号:23142966 上传时间:2023-05-08 格式:DOCX 页数:28 大小:24.35KB
下载 相关 举报
面向对象程序设计期末综合练习六程序设计.docx_第1页
第1页 / 共28页
面向对象程序设计期末综合练习六程序设计.docx_第2页
第2页 / 共28页
面向对象程序设计期末综合练习六程序设计.docx_第3页
第3页 / 共28页
面向对象程序设计期末综合练习六程序设计.docx_第4页
第4页 / 共28页
面向对象程序设计期末综合练习六程序设计.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

面向对象程序设计期末综合练习六程序设计.docx

《面向对象程序设计期末综合练习六程序设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计期末综合练习六程序设计.docx(28页珍藏版)》请在冰豆网上搜索。

面向对象程序设计期末综合练习六程序设计.docx

面向对象程序设计期末综合练习六程序设计

面向对象程序设计期末综合练习六(程序设计)

1.编一程序求出满足不等式1+1/2+1/3+...+1/n≥5的最小n值。

2.计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。

3.求满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。

4.已知

,求出并显示当x分别取-3.8,6.4,2.3,-4.2,8.9,3.5,-5.0,4.5时所对应的y值,要求把a定义为常量,其值设定为10.2,x的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。

5.求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。

6.已知6≤a≤30,15≤b≤36,求满足不定方程2a+5b=126的全部整数组解。

如(13,20)就是一个整数组解,并以所给的样式输出每个解。

7.某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计出成绩为优秀、达标和不达标的人数。

8.编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。

9.按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。

10.按照下面函数原型语句编写一个递归函数计算出数组a中n个元素的平方和并返回。

intf(inta[],intn);

11.按照函数原型语句“voidp(intn);”编写一个递归函数显示出如下图形,此图形是n=5的情况。

55555

4444

333

22

1

12.按照函数原型语句“voidp(intn);”编写一个递归函数显示出如下图形,此图形是n=5的情况。

1

22

333

4444

55555

13.根据下面类中Count函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intCount(intx);//从数组a的前n个元素中统计出其

//值等于x的个数并返回。

};

14.根据下面类中Search函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intSearch(intx);//从数组a的前n个元素中顺序查找值为x的元素,

//若查找成功则返回元素的下标,否则返回-1。

};

15.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intMaxMin(int&x,int&y);//从数组a的前n个元素中求出

//最大值和最小值,并分别由引用参数x和y带回,

//同时若n大于0则返回1,否则返回0。

};

16.根据下面类中Compare函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intCompare(AAb);//比较*this与b的大小,若两者中

//的n值相同,并且数组中前n个元素值对应

//相同,则认为两者相等返回1,否则返回0。

};

17.根据下面类中CompareBig函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

intCompareBig(AAb);//比较*this与b的大小,从前向后按两数组

//中的对应元素比较,若*this中元素值大则返回1,若b中

//元素值大则返回-1,若相等则继续比较下一个元素,直到

//一个数组中无元素比较,此时若两者的n值相同则返回0,

//否则若*this中的n值大则返回1,若b中的n值大则返回-1。

};

18.根据下面类中Reverse函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

AA*Reverse();//对于调用该函数的对象,将其a数组中前n个

//元素值按相反的次序排列,返回指向该对象的指针。

};

19.根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。

classAA{

int*a;

intn;

intMS;

public:

voidInitAA(intaa[],intnn,intms){

if(nn>ms){cout<<"Error!

"<

(1);}

MS=ms;

n=nn;

a=newint[MS];

for(inti=0;i

}

AA*Reverse1();//通过动态存储分配得到一个对象,并动态分配

//a[MS]数组空间,要求该对象中的n和MS的值与*this中的

//对应成员的值相同,数组元素的值是按照*this中数组元

//素的相反次序排列得到的,要求该函数返回动态对象的地址。

};

20.根据下面类中构造函数的原型和注释写出它的类外定义。

classArray{

int*a;//指向动态分配的整型数组空间

intn;//记录数组长度

public:

Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Array(Array&aa);//拷贝构造函数

Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this

ArrayUion(Array&aa);//实现*this和aa中的数组合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回数组长度

voidPrint(){//输出数组

for(inti=0;i

cout<

cout<

}

};

21.根据下面类中拷贝构造函数的原型写出它的类外定义。

classArray{

int*a;//指向动态分配的整型数组空间

intn;//记录数组长度

public:

Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Array(Array&aa);//拷贝构造函数

Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this

ArrayUion(Array&aa);//实现*this和aa中的数组合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回数组长度

voidPrint(){//输出数组

for(inti=0;i

cout<

cout<

}

};

22.根据下面类中Give函数的原型和注释写出它的类外定义。

classArray{

int*a;//指向动态分配的整型数组空间

intn;//记录数组长度

public:

Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Array(Array&aa);//拷贝构造函数

Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this

ArrayUion(Array&aa);//实现*this和aa中的数组合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回数组长度

voidPrint(){//输出数组

for(inti=0;i

cout<

cout<

}

};

23.根据下面类中Uion函数的原型和注释写出它的类外定义。

classArray{

int*a;//指向动态分配的整型数组空间

intn;//记录数组长度

public:

Array(intaa[],intnn);//构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Array(Array&aa);//拷贝构造函数

Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this

ArrayUion(Array&aa);//实现*this和aa中的数组合并的功能,把合并

//结果(其长度为两数组长度之和)存入临时对象并返回

intLenth(){returnn;}//返回数组长度

voidPrint(){//输出数组

for(inti=0;i

cout<

cout<

}

};

24.根据下面类中构造函数的原型和注释写出它的类外定义。

classStrings{

char*s;//指向动态分配的字符串数组空间

intn;//记录字符串长度

public:

Strings(char*str);//构造函数,利用str字符串长度初始化n,

//利用str字符串初始化s所指的字符串空间

Strings(Strings&str);//拷贝构造函数

Strings&Give(Strings&str);//实现str赋值给*this的功能

StringsUion(Strings&str);//实现*this和str中的字符串合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回字符串长度

voidPrint(){cout<

};

25.根据下面类中拷贝构造函数的原型写出它的类外定义。

classStrings{

char*s;//指向动态分配的字符串数组空间

intn;//记录字符串长度

public:

Strings(char*str);//构造函数,利用str字符串长度初始化n,

//利用str字符串初始化s所指的字符串空间

Strings(Strings&str);//拷贝构造函数

Strings&Give(Strings&str);//实现str赋值给*this的功能

StringsUion(Strings&str);//实现*this和str中的字符串合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回字符串长度

voidPrint(){cout<

};

26.根据下面类中Give函数的原型和注释写出它的类外定义。

classStrings{

char*s;//指向动态分配的字符串数组空间

intn;//记录字符串长度

public:

Strings(char*str);//构造函数,利用str字符串长度初始化n,

//利用str字符串初始化s所指的字符串空间

Strings(Strings&str);//拷贝构造函数

Strings&Give(Strings&str);//实现str赋值给*this的功能并返回*this

StringsUion(Strings&str);//实现*this和str中的字符串合并的

//功能,把合并结果存入临时对象并返回

intLenth(){returnn;}//返回字符串长度

voidPrint(){cout<

};

27.根据下面类中Uion函数的原型和注释写出它的类外定义。

classStrings{

char*s;//指向动态分配的字符串数组空间

intn;//记录字符串长度

public:

Strings(char*str);//构造函数,利用str字符串长度初始化n,

//利用str字符串初始化s所指的字符串空间

Strings(Strings&str);//拷贝构造函数

Strings&Give(Strings&str);//实现str赋值给*this的功能并返回*this

StringsUion(Strings&str);//实现*this和str中的字符串连接的功能,

//把连接结果存入临时对象并返回

intLenth(){returnn;}//返回字符串长度

voidPrint(){cout<

};

28.下列程序段中,A_class的成员函数Variance()可求出两数的平方差,请改写该程序段,把Variance()函数从A_class类中分离出来,用友元函数来实现该函数的功能。

classA_class{

private:

intx,y,t;

public:

A_class(inti,intj):

x(i),y(j){

if(y>x){t=x;x=y;y=t;}

}

intVariance(){returnx*x-y*y;}

//其它函数从略

};

voidmain(){

A_classA_obj(3,5);

cout<<"Result:

"<

}

29.下面给出了矩阵类Matrix定义。

为了求两个矩阵对象的乘积,需要定义一个Matrix的友元函数Multiply()。

请按照友元函数Multiply()的声明编写出该函数的定义。

classMatrix{

public:

Matrix(introw,intcol);//构造一个具有row行col列的矩阵

~Matrix(){delete[]mem;}//析构函数

friendboolMultiply(Matrix&m1,Matrix&m2,Matrix&m3);

//定义Multiply()为友元函数,该函数把m1×m2的值赋给m3

//其他成员函数从略

private:

int*mem;//动态申请矩阵空间

constintrows,cols;//矩阵的行数和列数

};

Matrix:

:

Matrix(introw,intcol):

rows(row),cols(col)

{

mem=newint[row*col];

}

boolMultiply(Matrix&m1,Matrix&m2,Matrix&m3)

{

//确定矩阵是否能够进行相乘

if(m1.rows!

=m3.rows||m2.cols!

=m3.cols||m1.cols!

=m2.rows)returnfalse;

//定义sum变量,用于计算乘积矩阵m3中每个元素的值

intsum;

//请在下面编写剩余部分

 

}

30.已知类定义如下,其中Shape为基类,Circle和Rectangle分别Shape的直接派生类,Square为Rectangle的直接派生类和Shape的间接派生类。

请模仿Circle类,写出Rectangle类的所有成员函数。

/******************文件shape.h*************************/

constfloatPI=3.14159f;//定义圆周率常量

classShape//几何图形抽象类

{

public:

virtualfloatGetPerimeter()=0;//纯虚函数,计算周长

virtualfloatGetAre()=0;//纯虚函数,计算面积

};

classCircle:

publicShape//圆类

{

public:

Circle(floatrad):

rad(rad){}

~Circle(){}

floatGetPerimeter(){return2*PI*rad;}//计算圆形周长

floatGetAre(){returnPI*rad*rad;}//计算圆形面积

private:

floatrad;//圆的半径

};

classRectangle:

publicShape//矩形类

{

public:

//在下面编写每个成员函数

 

private:

floatlength,width;//矩形的长和宽

};

classSquare:

publicRectangle//正方形类

{

public:

Square(floatlen):

Rectangle(len,len){}

~Square(){}

};

31.已知类定义如下,其中Shape为基类,Circle和Rectangle分别Shape的直接派生类,Square为Rectangle的直接派生类和Shape的间接派生类。

请模仿Rectangle类,写出Circle类的所有成员函数。

/******************文件shape.h*************************/

constfloatPI=3.14159f;//定义圆周率常量

classShape//几何图形抽象类

{

public:

virtualfloatGetPerimeter()=0;//纯虚函数,计算周长

virtualfloatGetAre()=0;//纯虚函数,计算面积

};

classRectangle:

publicShape//矩形类

{

public:

Rectangle(floatlen,floatwid):

length(len),width(wid){}

~Rectangle(){}

floatGetPerimeter(){return2*(length+width);}//计算矩形周长

floatGetAre(){returnlength*width;}//计算矩形面积

private:

floatlength,width;//矩形的长和宽

};

classCircle:

publicShape//圆类

{

public:

//在下面编写每个成员函数

 

private:

floatrad;//圆的半径

};

classSquare:

publicRectangle//正方形类

{

public:

Square(floatlen):

Rectangle(len,len){}

~Square(){}

};

程序设计参考解答

1.若采用for循环编写程序,则如下所示:

voidmain()

{

inti=0;doubles=0;

while(s<5)s+=double

(1)/++i;

cout<<"n="<

}

#include

voidmain()

{

inti;doubles=0;

for(i=1;s<5;i++)s+=1.0/i;

cout<<"n="<

//注意:

此i-1的值为所求的n值

}

2.#include

voidmain()

{

inti;//用i作为循环变量

intp=1;//用p作为累乘变量

ints=1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1