哈理工B9c++实验报告.docx
《哈理工B9c++实验报告.docx》由会员分享,可在线阅读,更多相关《哈理工B9c++实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
哈理工B9c++实验报告
计算机实践
C/C++程序设计报告
指导教师
学号
学生姓名
专业
班级
电话
成绩
二〇一三年六月廿八日
一.设计题目
题目编号:
B9
题目名称:
在C/C++语言环境下实现复数运算:
复数的乘法、除法和乘幂运算。
二.题目的意义
该程序需要建立一个复数类complex;定义复数类成员函数乘除等等,利用类成员函数的重载,进行乘法、除法、乘幂运算,据此产生一个运算的式子,从而实现复数计算的功能。
三.程序设计功能图
程序由4个功能模块(函数)组成,功能模块图如下:
图3-1程序设计功能图
表3-1主函数main()说明
模块名称
main
模块功能
主函数
模块说明
产生随机数、调用乘法,除法,乘幂运算
类型
变量名
初值
值域
变量说明
double
a[]
实部
double
b[]
虚部
double
c[]
计算结果
double
d[]
实部备份
double
e[]
虚部备份
int
n
int
i
0
控制循环次数
int
x
1
main()函数程序代码如下:
/************************
*学号:
1201010719
*姓名:
武思文
*班级:
电气12-7班
*题目代码:
B9
*程序功能:
在C/C++环境下实现复数乘法、除法、乘幂的运算。
************************/
#include"iostream.h"
#include"math.h"
doublea[2],b[2],c[2],d[2],e[2];//a实部,b虚部,c计算结果
d实部备份e虚部备份
//乘法
voidMul()
{
c[0]=a[0]*a[1]-b[0]*b[1];
c[1]=b[0]*a[1]+a[0]*b[1];
}
//除法
voidDiv()
{
c[0]=(a[0]*a[1]+b[0]*b[1])/(a[1]*a[1]+b[1]*b[1]);
c[1]=(b[0]*a[1]-a[0]*b[1])/(a[1]*a[1]+b[1]*b[1]);
}
//乘幂
voidPow()
{
intn;
n=floor(a[1]);
d[0]=a[0];
d[1]=a[1];
e[0]=b[0];
e[1]=b[1];
a[1]=a[0];
b[1]=b[0];
for(inti=0;i{
if(i!
=0)
{
a[0]=c[0];
b[0]=c[1];
}
Mul();
}
a[0]=d[0];
a[1]=d[1];
b[0]=e[0];
b[1]=e[1];
}
voidinput()
{
cout<<"输入第一个复数:
"<复数a+bi,请输入ab,退出请输入-9990"<cin>>a[0]>>b[0];
cout<<"输入第二个复数:
"<cin>>a[1]>>b[1];
}
intmain()
{
intx=1;
while
(1)
{
input();
if(a[0]==-999.0&&b[0]==0)
break;
if(a[1]==-999.0&&b[1]==0)
break;
while(x!
=0)
{
cout<<"请输入运算类型:
"<(1)乘法运算"<(2)除法运算"<cin>>x;
cout<switch(x)
{case1:
Mul();
cout<<"乘法结果:
"<case2:
Div();
cout<<"除法结果:
"<case3:
Pow();
cout<<"乘幂结果:
"<case4:
x=0;
}
}
}
return0;
}
表3-2乘法函数mul()说明
模块名称
voidmulti
模块功能
乘法运算
模块说明
根据公式算出两复数乘积
类型
变量名
初值
值域
变量说明
double
a[]
实部
double
b[]
虚部
double
c[]
计算结果
double
d[]
实部备份
double
e[]
虚部备份
int
n
int
i
0
控制循环次数
int
x
1
mul()函数程序代码如下:
//乘法
voidMul()
{
c[0]=a[0]*a[1]-b[0]*b[1];
c[1]=b[0]*a[1]+a[0]*b[1];
}
表3-3除法函数div()说明
模块名称
div
模块功能
除法运算
模块说明
产生除法运算的式子,得出结果
类型
变量名
初值
值域
变量说明
double
a[]
实部
double
b[]
虚部
double
c[]
计算结果
double
d[]
实部备份
double
e[]
虚部备份
int
n
int
i
0
控制循环次数
int
x
1
//除法
voidDiv()
{
c[0]=(a[0]*a[1]+b[0]*b[1])/(a[1]*a[1]+b[1]*b[1]);
c[1]=(b[0]*a[1]-a[0]*b[1])/(a[1]*a[1]+b[1]*b[1]);
}
表3-4函数multi()说明
模块名称
Pow
模块功能
乘幂运算
模块说明
根据乘幂运算公式,得出两复数乘幂结果
类型
变量名
初值
值域
变量说明
double
a[]
实部
double
b[]
虚部
double
c[]
计算结果
double
d[]
实部备份
double
e[]
虚部备份
int
n
int
i
0
控制循环次数
int
x
1
pow()函数程序代码如下:
voidPow()
{
intn;
n=floor(a[1]);
d[0]=a[0];
d[1]=a[1];
e[0]=b[0];
e[1]=b[1];
a[1]=a[0];
b[1]=b[0];
for(inti=0;i{
if(i!
=0)
{
a[0]=c[0];
b[0]=c[1];
}
Mul();
}
a[0]=d[0];
a[1]=d[1];
b[0]=e[0];
b[1]=e[1];
}
四.详细设计
图4-1主程序流程图
五.程序运行结果
图5-1代码编辑界面截图
图5-2运行界面截图
六.调试、分析及总结
No
遇到问题
解决措施
1
函数怎么进行分支
运用switch语句
2
输入-9900,如何退出
通过while
(1)死循环,与if从句进行判定
3
复数的乘方运算表达式不懂
查找资料
4
怎样定义复数
分别用a.b代表实部和虚部
5
写函数时很多函数多次重复写出
先定义函数,后调用函数。
6
7
对本次设计的收获,对本课程的认识及思考。
对C/C++的接触、认识、使用有了更深一步的了解。
此程序让我知道了使用switch语句,执行不同命令下的子函数。
同时,利用while,if循环体的使用,来选择和判断结果。
六.参考资料
1.VisualC++从入门到精通(第2版)清华大学出版社2010、
2.大学C/C++程序设计案例教程中国铁道部出版社2010
4.
七.综合评分
以下内容任课教师填写
序号
考察主项
教师评语
得分
备注
1
完成题目情况
2
代码格式规范
3
题目难度系数
4
创新性
5
实验报告文档
6
平时成绩
7
成绩合计