西安交大C++程序设计第七章作业Word下载.docx

上传人:b****5 文档编号:16539593 上传时间:2022-11-24 格式:DOCX 页数:24 大小:597.05KB
下载 相关 举报
西安交大C++程序设计第七章作业Word下载.docx_第1页
第1页 / 共24页
西安交大C++程序设计第七章作业Word下载.docx_第2页
第2页 / 共24页
西安交大C++程序设计第七章作业Word下载.docx_第3页
第3页 / 共24页
西安交大C++程序设计第七章作业Word下载.docx_第4页
第4页 / 共24页
西安交大C++程序设计第七章作业Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

西安交大C++程序设计第七章作业Word下载.docx

《西安交大C++程序设计第七章作业Word下载.docx》由会员分享,可在线阅读,更多相关《西安交大C++程序设计第七章作业Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

西安交大C++程序设计第七章作业Word下载.docx

'

f'

);

weight=Weight;

}

print()//输出函数

cout<

<

"

名字:

name<

\t年龄:

age<

\t性别:

sex<

\t体重:

weight<

endl;

intmain()

Dogdog1,dog2,dog;

charName1[20],Sex1,Name2[20],Sex2;

intAge1,Age2;

doubleWeight1,Weight2;

请输入第一只小狗的名字、年龄、性别、体重:

\n"

;

//信息录入

cin>

>

Name1>

Age1>

Sex1>

Weight1;

dog1.Register(Name1,Age1,Sex1,Weight1);

请输入第二只小狗的名字、年龄、性别、体重:

Name2>

Age2>

Sex2>

Weight2;

dog2.Register(Name2,Age2,Sex2,Weight2);

第一条狗的信息如下:

//信息显示

dog1.print();

第二条狗的信息如下:

dog2.print();

dog=dog1;

//交换dog1和dog2的内容

dog1=dog2;

dog2=dog;

二者交换以后信息为:

//通过输出交换结果检验类的定义有作用

第一条狗:

第二条狗:

return0;

2.实验结果:

3.问题分析:

设计思路:

首先输入两个狗的信息,然后显示输入的信息,然后交换二者再次输出,通过再次输出的结果表明对其操作有效,从而表明类的定义是有效的。

(二)第二题:

设计并测试一个名为Ellipse的椭圆类,其属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积。

cmath>

classEllipse//定义椭圆类

doublex1,x2,y1,y2,S;

voidRegister(doublea,doubleb,doublec,doubled);

doublearea();

//面积计算函数

voidfeedback();

voidEllipse:

Register(doublea,doubleb,doublec,doubled)//输入函数

x1=a;

x2=c;

y1=b;

y2=d;

doubleEllipse:

area()//面积计算函数,用公式:

S=pi*a*b(a、b为半长轴、半短轴长)

S=3.1415*fabs(x1-x2)*fabs(y1-y2)/4;

returnS;

//返回面积值

feedback()//输出函数,反馈输入值

您输入的点的坐标为:

("

x1<

"

y1<

)和("

x2<

y2<

)\n"

voidmain()

doublea,b,c,d;

请依次输入外接矩形的两对角顶点的横纵坐标:

a>

b>

c>

d;

Ellipseellipse;

ellipse.Register(a,b,c,d);

ellipse.feedback();

椭圆面积为:

ellipse.area()<

(1)中心在原点:

(2)中心不在原点:

(三)第三题:

仿照Date类设计一个Time类,按照各种可能的格式输出时间。

classTime

inth,m,s;

voidinit(int,int,int);

voidprint_hms();

//时分秒

voidprint_hsm();

//时秒分

voidprint_msh();

//分秒时

voidprint_mhs();

//分时秒

voidprint_shm();

//秒时分

voidprint_smh();

//秒分时

voidTime:

init(inta,intb,intc)

h=(a>

=0&

&

a<

24)?

a:

0;

m=(b>

b<

60)?

b:

s=(c>

c<

c:

print_hms()

时分秒:

h<

-"

m<

s<

print_hsm()

时秒分:

print_msh()

分秒时:

print_mhs()

分时秒:

print_shm()

秒时分:

print_smh()

秒分时:

inta,b,c;

请输入时间,按照时分秒格式:

c;

Timetime;

time.init(a,b,c);

time.print_hms();

time.print_hsm();

time.print_mhs();

time.print_msh();

time.print_shm();

time.print_smh();

对多种超出范围的情况进行了检测:

(1)正常输入:

(2)24点会被作为0点:

(3)分超过60:

(4)秒超过60:

(5)时超过24:

(四)实验题目四:

(必做题)设计定义一个三角形类,成员函数应有输入三角形初始数据函数、求三角形面积函数、输出面积函数。

并编写主函数加以测试。

1.程序源代码:

classtriangle

doubleh,l,S;

voidRegister(doublea,doubleb);

intexamine();

//检验是否合理的函数

voidarea();

//计算面积

//输出计算结果函数

voidtriangle:

Register(doublea,doubleb)

h=a;

l=b;

inttriangle:

examine()

if(h<

=0||l<

=0)

return0;

return1;

area()

S=h*l/2;

print()

面积为:

S<

triangles;

doublea,b;

请输入三角形的长和高:

b;

s.Register(a,b);

while(s.examine()==0)

{

cout<

输入有误,重新输入!

cin>

s.Register(a,b);

}

s.area();

s.print();

2.实验结果:

(1)输入有误时:

(2)输入合理:

五、第五题:

(必做题)定义一个二元一次方程组类,成员函数应有输入6个系数的函数、求二元一次方程组的根的函数,输出该方程组的函数,即输出格式如下:

 

AX+BY=C

DX+EY=F

并编写主函数加以测试。

classequation//定义方程类

doublea,b,c,d,e,f;

doublex,y;

voidRegister(doubleA,doubleB,doubleC,doubleD,doubleE,doubleF);

//检验函数,检查系数是否能够确定唯一解

voidresult();

//计算函数

voidequation:

Register(doubleA,doubleB,doubleC,doubleD,doubleE,doubleF)

a=A;

b=B;

c=C;

d=D;

e=E;

f=F;

intequation:

if(a*e-b*d==0)

result()

x=(c*e-b*f)/(a*e-b*d);

y=(a*f-c*d)/(a*e-b*d);

计算结果为:

x="

x<

,y="

y<

doubleA,B,C,D,E,F;

equationtest;

请输入系数A,B,C,D,E,F:

A>

B>

C>

D>

E>

F;

test.Register(A,B,C,D,E,F);

while(test.examine()==0)//若系数不符合要求,提示重新输入

输入错误,请重新输入:

test.Register(A,B,C,D,E,F);

test.result();

test.print();

(2)输入有误:

六、第六题:

6、(必做题)定义一个计算器类,成员函数有加法、减法、除法、乘法、SIN(doublex)共5个功能性函数,当然还必须有初始化数据成员的函数、修改数据成员的函数、输出数据成员的函数。

//6、(必做题)定义一个计算器类,成员函数有加法、减法、除法、乘法、SIN(doublex)共个功能性函数,

//当然还必须有初始化数据成员的函数、修改数据成员的函数、输出数据成员的函数。

classcalculate

doublea,b,s;

voidRegister(doublex,doubley);

voidplus();

voidminus();

voidchufa();

voidchengfa();

voidSIN();

voidcalculate:

Register(doublex,doubley)

a=x;

b=y;

plus()

s=a+b;

minus()

s=a-b;

chufa()

s=a/b;

chengfa()

s=a*b;

SIN()

s=sin(a);

charm;

输入x:

x;

输入y:

y;

calculatecal;

cal.Register(x,y);

请输入要进行的计算类型:

m;

switch(m)

case'

+'

cal.plus();

break;

-'

cal.minus();

*'

cal.chengfa();

case'

/'

cal.chufa();

s'

cal.SIN();

default:

ERROR!

!

cal.print();

(1)加法:

(2)减法:

(3)乘法:

(4)除法:

(5)sin:

(6)输入有误:

本程序的优点:

①能够实现对计算类型的选择;

②对于输入不符合要求的能够输出error并结束程序;

③对sin的计算,能够实现与直接计算进行对比以检测是否正确。

七、第七题:

(选做题)设计定义100位的十进制正整数类,成员函数至少应有输入初始数据函数、加法函数和输出函数,并编写主函数加以测试。

(提示:

在类中定义int 

num[100]。

输入一个大正整数字符串,如"

23112333298789876559998"

,再将该字符串转换成大整数放入num数组中)

classnumber//定义number类

intnum[100];

//私有成员整型数组

intl;

//整型数l,为输入的字符的长度

voidRegister(chara[100]);

//用于将输入的字符转换为整型数组元素并储存的函数

voidplus(charb[100]);

//加法函数,将b所储存的数加到a上

voidnumber:

Register(chara[100])//转换函数

inti;

l=strlen(a);

for(i=0;

i<

l;

i++)

num[l-i-1]=a[i]-'

0'

plus(charb[100])//加法函数

intnumb[100];

intlb=strlen(b);

lb;

numb[lb-i-1]=b[i]-'

if(l>

lb)

for(i=lb;

numb[i]=0;

if(l<

for(i=l;

num[i]=0;

num[l]=0;

numb[lb]=0;

intm=0;

=l||i<

=lb;

num[i]=num[i]+numb[i]+m;

m=num[i]/10;

num[i]=num[i]%10;

num[i]=m;

l++;

inti=l-1;

while(num[i]==0)

i--;

for(;

i>

=0;

i--)

num[i];

numberw;

chara[100],b[100];

输入正整数a:

a;

w.Register(a);

//检验程序具有输入功能

输入要加上的数b:

计算结果是:

w.plus(b);

//程序具有加法功能

w.print();

//程序具有输出功能

(1)位数相同,不进位:

(2)位数不同,无进位:

(3)进位:

(4)开头含0:

(5)能处理长数字:

(1)需要解决的主要问题:

①将字符转换为数组储存下来,在储存的时候,为了便于解决进位的问题,故将其个位为num[0],以便在最高位置后再加元素。

②开头0的处理:

输出的时候将开头的0避开。

③进位的处理:

将低一位的两个对应数字以及上一个m加起来之后求其除以10的商,然后加到高位数字上;

将所得的余数作为低位的结果。

④考虑到最高位位数会变化,所以将最高位之上的一位初始为0,若最后结果没有导致最高位进位,则由于是0,输出时被避开。

(2)不足:

仍有一些问题没有完善,存在一些漏洞。

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

当前位置:首页 > 法律文书 > 判决书

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

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