C语言复数的运算(实验报告)
实验报告
题目:复数的四则运算
班级: 13信管 姓名:白浩然 学号:201340403034 完成日期:2014.05.21
一、需求分析
1.本演示程序中复数由两个相互之间存在次序关系的实数构成。
2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。
3.程序执行的命令包括:
1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积;5)从已知复数中分离出实部;6)从已知复数中分离出虚部。
4.测试数据:
1)构造复数:
复数求和:
复数求差:
复数求积:
提取实部:
提取虚部:
编码实现
#include "stdio.h"
#include "stdlib.h"
struct complex{
float real;//实部
float imag;//虚部
};
//构造复数
void InitComplex(complex &c,float r1,float r2)
{
c.real=r1;//r1为实部
c.imag=r2;//r2为虚部
}
//复数求和
void AddComplex(complex &c,complex c1,complex c2)
{
c.real=c1.real+c2.real;//实部相加
c.imag=c1.imag+c2.imag;//虚部相加
}
//复数求差
void SubComplex(complex &c,complex c1,complex c2)
{
c.real=c1.real-c2.real;//实部相减
c.imag=c1.imag-c2.imag;//虚部相减
}
//复数求积
void MulComplex(complex &c,complex c1,complex c2)
{
c.real=(c1.real*c2.real)-(c1.imag*c2.imag);
c.imag=(c1.real*c2.imag)+(c2.real*c1.imag);
}
//分离实部
void RealComplex(complex c,float &r)
{
r=c.real;
}
//分离虚部
void ImagComplex(complex c,float &r)
{
r=c.imag;
}
//主程序
void main()
{
complex c,c1,c2;
float r,r1,r2,r11,r22,r12,r21;
int node;
printf("请输入要操作的序号:\n");
printf("1.构造一个复数 2.两个复数求和 3.两个复数求差\n");
printf("4.两个复数求积 5.分离出实部 6.分离出虚部\n");
scanf("%d",&node);
while(node!=0)
{
switch(node){
case 1:printf("输入复数的实部和虚部:\n");
scanf("%f %f",&r1,&r2);
InitComplex(c,r1,r2);
printf("构造的复数为:%f+%fi\n",c.real,c.imag);
break;
case 2:printf("输入c1的实部和虚部:\n");
scanf("%f %f",&r11,&r12);
InitComplex(c1,r11,r12);
printf("输入c2的实部和虚部:\n");
scanf("%f %f",&r21,&r22);
InitComplex(c2,r21,r22);
AddComplex(c,c1,c2);
printf("结果为:%f+%fi\n",c.real,c.imag);
break;
case 3:printf("输入c1的实部和虚部:\n");
scanf("%f %f",&r11,&r12);
InitComplex(c1,r11,r12);
printf("输入c2的实部和虚部:\n");
scanf("%f %f",&r21,&r22);
InitComplex(c2,r21,r22);
SubComplex(c,c1,c2);
printf("结果为:%f+%fi\n",c.real,c.imag);
break;
case 4:printf("输入c1的实部和虚部:\n");
scanf("