西安交大C++程序设计第七章作业Word下载.docx
- 文档编号:16539593
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:24
- 大小:597.05KB
西安交大C++程序设计第七章作业Word下载.docx
《西安交大C++程序设计第七章作业Word下载.docx》由会员分享,可在线阅读,更多相关《西安交大C++程序设计第七章作业Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
'
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)不足:
仍有一些问题没有完善,存在一些漏洞。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安 交大 C+ 程序设计 第七 作业