C程序设计练习题.docx

上传人:b****6 文档编号:5940730 上传时间:2023-01-02 格式:DOCX 页数:11 大小:21.54KB
下载 相关 举报
C程序设计练习题.docx_第1页
第1页 / 共11页
C程序设计练习题.docx_第2页
第2页 / 共11页
C程序设计练习题.docx_第3页
第3页 / 共11页
C程序设计练习题.docx_第4页
第4页 / 共11页
C程序设计练习题.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C程序设计练习题.docx

《C程序设计练习题.docx》由会员分享,可在线阅读,更多相关《C程序设计练习题.docx(11页珍藏版)》请在冰豆网上搜索。

C程序设计练习题.docx

C程序设计练习题

C++程序设计实验(下)练习题

一、类与对象

1.定义一个名为Rectangle的矩形类:

(1)数据成员为矩形的长Len和宽Wid;

(2)定义有参构造函数;

(3)两个成员函数Area()和Length(),分别计算并输出矩形的面积和周长。

(4)定义主函数,创建一个Rectangle类对象:

长为5,宽为2。

通过调用成员函数输出该矩形的面积和周长。

2.日期类。

定义一个日期类Cdate

属性:

一个包括年(year)、月(month)和日(day)三个整型私有数据成员。

方法:

定义成员函数Setdate()设置日期、成员函数Isleapyear()判断是否为闰年、成员函数Print()输出日期。

定义主函数,对上述成员函数进行测试。

voidmain()

{

Cdated1;//定义对象

d1.Setdate(1999,12,30);//通过对象访问成员

if(d1.Isleapyear())

cout<<“闰年”;

else

cout<<“非闰年!

”;

d1.Print();

}

3.员工问题

1.定义一个日期类Date

(1)私有数据成员包括:

年(intyear)、月(intmonth)、日(intday);

(2)定义构造函数:

Date(int_year,int_month,int_day),对数据成员进行初始化;

(3)定义成员函数voidprint()const,打印日期信息(打印格式:

年/月/日)。

2.定义一个员工类Employee

(1)私有数据成员包括:

姓名(char*name)、出生日期(Datebirth)、月工资(doublesalary);

(2)定义构造函数:

Employee(char*_name,intyear,intmonth,intday,double_salary),对数据成员进行初始化;

(3)定义析构函数:

~Employee(),释放堆空间;

(4)定义成员函数doublecomputSalary(doublebonus)const,计算员工年薪(计算公式:

12×月工资+年终奖),其中参数bonus为年终奖;

(5)定义成员函数voidprint()const,打印员工信息,打印格式如下图所示。

姓名:

Hennessy

出生日期:

1988/11/20

月工资:

6000

3.定义主函数,完成员工类的所有测试。

4.计算类

1、定义一个名称为Calcuator计算类,实现加减乘除四则运算,要求如下:

(1)定义二个double类型的私有成员变量operand1和operand2;

(2)定义公有无参构造函数operation(),将成员变量均初始化为0;

(3)定义公有有参构造函数operation(doubleop1,doubleop2),对成员变量初始化;

(4)定义公有成员函数getOperand1()和getOperand2()分别返回二个运算数;

(5)定义公有成员函数setOperand1(doublenewOp1)和setOperand2(doublenewOp2)以修改成员变量operator1,operator2的值;

(6)定义公有成员函数Addition()返回二个操作数的和;

(7)定义公有成员函数Subtraction()返回二个操作数的差;

(8)定义公有成员函数Multiplication()返回二个操作数的乘积;

(9)定义公有成员函数Division()返回二个操作数的商,注意分母为0要进行判断;

2、在主函数中对上述类测试,要求对类中定义的功能全部测试到,代码保存在test1.cpp文件中

5.设计长方形类CRectangle

(1)数据成员:

长doublel、宽doublew;

(2)无参构造函数将数据成员初始化为(2,1);

(3)有参构造函数利用参数对数据成员初始化;

(4)提供拷贝构造函数;

(5)成员函数area(),返回长方形的面积;

(6)成员函数perimeter(),返回长方形的周长;

(7)成员函数voiddisplay(),输出长方形的长和宽;

(8)定义主函数,完成类的测试。

6.设计圆类CCircle

(1)数据成员:

半径doubleradius;

(2)无参构造函数将数据成员初始化为(0);

(3)有参构造函数利用参数对数据成员初始化;

(4)提供拷贝构造函数;

(5)成员函数area(),返回圆的面积;

(6)成员函数perimeter(),返回圆的周长;

(7)成员函数voiddisplay(),输出圆的半径;

(8)定义主函数,完成类的测试。

7.字符串类

声明一个类String1,其数据成员为charhead[100],构造函数String(char*Head)实现head的初始化,成员函数voidReverse()实现head内字符串的逆序存放,成员函数voidPrint()实现head内字符串的输出。

 

二、继承与多态

1.创建由Point类对象派生的Circle类

定义Point类:

(1)数据成员:

x、y,分别对应横、纵坐标;

(2)有参构造函数:

利用参数对数据成员赋值;

(3)函数Getx:

获取点类的横坐标值;

(4)函数Gety:

获取点类的纵坐标值;

定义圆类Circle,公有继承Point类:

(5)新增数据成员:

半径r;

(6)构造函数:

Circle(floatX,floatY,floatR):

Point(X,Y)给点类的数据成员以及圆类的半径赋值;

(7)voidDisplay();显示该圆的圆心坐标和半径;

(8)主函数参考代码:

intmain()

{

floatx,y,r;

cout<<"请?

输º?

入¨?

圆2心?

坐Á?

标À¨º:

êo\n";

cin>>x>>y;

cout<<"请?

输º?

入¨?

半ã?

径?

êo\n";

cin>>r;

Circlec(x,y,r);

c.Display();

return0;

}

2.图形继承问题

a)定义类A//描述圆:

(x,y)为圆心,r为半径

(1)定义私有数据成员floatx,y,r;

(2)定义公有有参构造函数,对保护数据成员赋值;

(3)定义公有成员函数AccessX、AccessY、AccessR返回x、y、z的值

(4)定义公有型成员函数Area().返回圆的面积。

b)定义类B//描述物体的高

(1)定义私有型成员变量High;

(1)定义公有型带参的构造函数,完成对物体高度的赋值;

(2)定义返回类型为float的成员函数,返回物体的高;

c)定义派生类圆柱体类C,公有继承A类、私有继承B类

(1)定义私有成员floatVolume为圆柱体的体积;

(2)定义公有构造函数C(floata,floatb,floatc,floatd):

A(a,b,c),B(d)给数据成员赋值并计算援圆柱体的体积;

(3)定义返回类型为float的成员函数,返回物体的体积;

d) 定义测试类,完成上面类的所有测试。

3.图形继承问题

1.定义一个正方形基类Square

(1)保护数据成员包括:

边长(doublewidth);

(2)定义构造函数:

Square(double_width),对保护数据成员进行初始化;

(3)定义一个虚成员函数virtualdoublearea()const;实现正方形面积的计算。

2.定义一个派生类立方体类Cube,公有继承Square类

(1)定义构造函数:

Cube(double_width):

Square(_width),对基类的数据成员进行初始化;

(2)重新实现基类Square的虚函数area(),完成对立方体的表面积的计算;

(3)定义派生类的成员函数doublevolume()const,完成对立方体体积的计算。

3.定义一个派生类长方形类Rectangle,公有继承Square类

(1)定义保护数据成员:

长方形的长(doublelength);

(2)定义构造函数:

Rectangle(double_width,double_length):

Square(_width),分别对基类和派生类的数据成员进行初始化;

(3)重新实现基类Square的虚函数area(),完成对长方形面积的计算;

(4)定义派生类的成员函数doubleperimeter()const,完成对长方形周长的计算。

4.通过以下测试程序,完成上述基类与派生类的测试。

intmain(){

Cubecube(10);

Rectanglerect(10,20);

Square*base=&cube;

cout<<“正方体表面积:

”<area()<

cout<<“正方体体积:

”<

base=▭

cout<<“长方形面积:

”<area()<

cout<<“长方形周长:

”<

return0;

}

4.计算类

利用继承和多态实现加减乘除四则运算, 步骤如下:

1、先定义一个名称为Operator的类,要求如下:

(1)定义二个double类型的私有成员变量operand1和operand2;

(2)定义公有的且有参并带默认值的构造函数operation(doubleop1=0,doubleop2=0),对成员变量赋值;

(3)定义公有成员函数getOperand1()和getOperand2()分别返回二个运算数;

(4)定义公有成员函数setOperand1(doublenewOp1)和setOperand2(doublenewOp2)以修改成员变量operator1,operator2的值;

(5)定义公有成员函数getResult(),其返回值类型为double,并将其定义为纯虚函数。

2、通过公共继承上述运算类Operator定义一个加法运算类类AddOperator,不需要添加任何成员变量和函数,仅需要把父类的虚方法getResult()在这里具体实现,并能返回二个运算数的和。

类似,分别定义三个类分别对应减法,乘法和除法(SubOperator,MultiOperator,DivideOperator),并实现相应的运算。

3、在下述类似的主函数中对计算器类进行测试,要求对类中定义的功能全部测试到,代码保存在test2.cpp中。

intmain()

{operation*b;

b=newAddOperator();//注意这里只测试了加法,如果要测试别的运算,需要类似再定义别的类

b->setOperator1

(1);

b->setOperator2

(2);

cout<getResult()<

return0;}

5.图形类的继承与派生

(1)定义CShape类,包含求面积的纯虚函数virtualdoublearea()=0,数据成员lo;

(2)定义正方形类CSquare,公有继承CShape类,父类的数据成员lo作为正方形的边长,定义有参构造函数,重写CShape类中的doublearea()函数,求正方形的面积;

(3)定义圆类CCircle,公有继承CShape类,父类的数据成员lo作为圆的半径,定义有参构造函数,重写CShape类中的doublearea()函数,求圆的面积;

(4)定义主函数,完成上述功能的测试。

6.学生类和研究生类的继承关系问题。

学生类Student:

(1)数据成员有:

学生姓名、学分总数、学分平均成绩。

(2)成员函数有:

构造函数(提供学生姓名,学分总数0、学分平均成绩0)、增加一门课的学分和成绩到该学生的学分总数、学分平均成绩中、获取学分总数、获取学分平均成绩、输出学生所有信息。

导师类Advisor:

数据成员有导师编号noOfMeeting;成员函数有构造函数

研究生类GraduateStudent:

(1)从Student类公有派生;

(2)新增数据成员有:

导师advisor、初试等级qualifierGrade

(3)主函数测试派生关系类。

 

三、运算符重载

1.定义一个二维坐标点类Point2D

(1)私有数据成员包括:

横坐标(doublex)、纵坐标(doubley);

(2)公有提供一个带默认参数值的构造函数:

Point2D(double_x=0.0,double_y=0.0);

(3)定义公有成员函数voidprint()const,打印坐标信息(打印格式:

(x,y));

(4)定义减法运算符重载成员函数,实现求两点间的距离;

(5)定义主函数,完成对Point2D类的所有测试。

2.复数类1

1.定义复数类Complex,重载加(+)、减(-)、乘(*)、除(/)运算符,实现复数的四则运算;

(1)定义私有数据成员,实部Real和虚部Image;

(2)定义公有输出函数voidShow(),输出格式如“3+4i”或“-3-4i”;

2.运算符重载为普通函数

3.定义主函数,对上述成员函数进行测试。

intmain(void)

{

Complexc1(25,50),c2(10,20),c3(200,400),c;

c1.Show();

c=c1+c2;c.Show();

c3=c2-c1;c3.Show();

return0;

}

3.二维坐标点类

1.定义一个二维坐标点类Point2D

(1)私有数据成员包括:

横坐标(doublex)、纵坐标(doubley);

(2)公有提供一个带默认参数值的构造函数:

Point2D(double_x=0.0,double_y=0.0);

(3)定义公有成员函数voidprint()const,打印坐标信息(打印格式:

(x,y));

(4)定义减法运算符重载成员函数,实现求两点间的距离;

(5)定义前置自增运算符重载成员函数,实现对横、纵坐标分别加1.0的操作。

2.定义主函数,完成对Point2D类的所有测试。

4.复数类2

1、定义复数类Complex,要求如下:

(1)定义私有数据成员real和image分别对应实数的实部和虚部;

(2)定义公有带默认值的构造函数Complex(doublere=0,doubleim=0)将real和image初始化;

(3)定义公有函数voiddisplay()将该复数在屏幕上输出,输出格式为:

比如,3+4i输出为(3,4);

(4)定义公有函数Add(Complex&c)以返回二个复数的和,注意该函函数的返回值类型是Complex;

(5)定义公有成员函数Multi(Complex&c))返回二个操作数的乘积;

(6)定义公有成员函数operator+()和operator*()以重载加(+)、乘(*)运算符,从而实现复加法和乘法的四则运算。

注意,直接调用相应的成员函数可以节省时间;

2、定义主函数对上述重载的成员函数(+,*)进行测试,并使用成员函数display将结果输出,并将相关代码保存在test3.cpp中

5.有理数类

任何一个有理数都可以表示成两个整数的商m/n的形式,即分式形式,设计有理数分式类,规格如下:

(1)数据成员:

分母intDenominator、分子intnumerator;

(2)有参构造函数利用参数对数据成员初始化,默认数据成员初始化为(1,1);

(3)提供拷贝构造函数;

(4)成员函数SimplestFraction(),将分式变成最简分式;

(5)重载有理数的加法运算符;

(6)重载有理数的减法运算符;

(7)成员函数voiddisplay(),将有理数以分式形式输出;

(8)定义主函数,完成类的测试。

 

四、模板

1.模板1

(1)编写一个函数模版Tmax(Ta,Tb),返回两个值中的最大值;

(2)确保程序能正确处理字符串;

(3)在主函数中执行调用max("Hello","Good")、max(3,8)、max(2.3,4.5),测试结果。

2.模板2

函数模板(template),编写一个函数模板,用于交换两个值;在主函数中分别用int和double数据来测试。

3.模板3

编写一个函数模板Taverage(Tarr[],intn,Telement),计算一维数组arr中比指定数据element的值大的所有元素的平均值;并在主函数中分别用int和double类型的数据进行测试。

4.最大值模板

1、将复数类复制到本题对应的test4.cpp中,然后编写一个函数模板:

TMax(Ta,Tb),用于求两个T类型的数的最大值,该函数模板不仅可以实现对基本类型的支持,而且也可以对complex类型的支持。

为此,complex类需要支持比较运算符(>)。

为了比较二个复数,假定复数的大小只由长度(sqrt(real*real+imagle*image))来决定。

所以要求如下:

(1)复数类Complex定义一个成员函数getLength(),其返回值由上述长度公式计算,返回值类型为double.

(2)复数类Complex定义一个成员函数operator>(Complexc),其返回值类型为bool.

2、在主函数中分别用double和上述定义的Complex类型的数据来测试该模板,并将代码保存于test4.cpp中。

5.排序函数模板(template)

编写一个排序算法的函数模板,可以对char,int,long,float,double类型的数组进行排序,排序方法不限,并在main函数中测试。

 

五、文件

1.文件操作

将100以内能被3整除的数,十个一行地写入d:

\\abc.txt文件中。

2.文件操作

定义整型数组含有6个整数,并对数组初始化。

(1)将数组中的数据写入到D盘文件夹abc.txt文件中;

(2)读出abc.txt文件中的数据,并显示出来。

3.文件操作

1、将复数类复制到本题对应的test5.cpp中,将Complex类中的成员函数display()改写为可以将该复数输出到任意指定的文件中去,要求如下:

(1)将成员函数display()声明为:

voidComplex:

:

display(ostreamoo)

(2)在当前目录下新建文本文档abc.txt,并将复数的结果即可以输出到屏幕上,也可以输出到abc.txt上。

2、在主函数中对上述类测试,要求对类中定义的功能全部测试到,代码保存在test1.cpp文件中。

4.文件操作

定义一个包含10个int型数据的整型数组,并用0~99之间的随机数对数组元素进行初始化。

完成以下文件操作:

(1)将数组中的数据分别写入到D:

\\data1.txt文本文件和D:

\\data2.bin二进制文件中;

(2)分别读取D:

\\data1.txt文本文件和D:

\\data2.bin二进制文件中的数据,并显示到屏幕上。

5.数据文件操作

(1)随机产生100个1000以内的整数,把其中的所有偶数写入d:

\a.txt文件中;

(2)读取d:

\a.txt文件中的数据,显示在屏幕上。

 

友情提示:

部分文档来自网络整理,供您参考!

文档可复制、编制,期待您的好评与关注!

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

当前位置:首页 > 自然科学

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

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