复数运算的演示程序.

合集下载

MATLAB可视化方法和技巧13复数的计算和图示

MATLAB可视化方法和技巧13复数的计算和图示

复数的计算和图示表3 MATLAB关于复数运算的函数{范例3_1}复数的加减法设有两个复数z1 = 1 + 2i和z2 = 4 + 3i,其中i是虚数单位求两个复数的和z1 + z2和差z2–z1。

[解析]复数有三种表示形式(1)代数式z = x + i y(3_1_1)(2)三角式z = r(cosθ + isinθ) (3_1_2) 其中r是复数的模,θ是复角。

代数式与三角式的换算关系是r=arctan yθ(3_1_3)xx = r cosθ,y = r sinθ(3_1_4)(3)指数式z = r e iθ(3_1_5) 其中利用了欧拉公式e iθ= cosθ + isinθ(3_1_6)设有两个复数z1 = x1 + i y1,z2 = x2 + i y2(3_1_7) 复数加法是z= z1 + z2 = (x1 + x2) + i(y1 + y2) (3_1_8) 复数减法是z= z1 - z2 = (x1 - x2) + i(y1 - y2) (3_1_9) [程序]P3_1plus.m如下。

%复数的加减法clear %清除变量z1=1+2i; %第1个复数(1)x1=real(z1); %取第1个复数的实部(2)y1=imag(z1); %取第1个复数的虚部(2)x2=4; %第2个复数的实部y2=3; %第2个复数的虚部z2=x2+i*y2; %形成第2个复数(3)z=z1+z2; %两复数之和(4)x=real(z); %取复数的实部y=imag(z); %取复数的虚部figure %创建图形窗口quiver(0,0,x1,y1,0) %在复平面画第1个复数(5)hold on%保持图像quiver(0,0,x2,y2,0) %画第2个复数(5)quiver(0,0,x,y,0) %画复数之和(5)plot([x1,x],[y1,y],'--') %画虚线(6)plot([x2,x],[y2,y],'g--') %画虚线(6)axis equal%使坐标刻度相等(7)grid on%加网格r=abs(z); %求模(8)theta=angle(z)*180/pi; %求复角(9)text(0,0,num2str(theta),'FontSize',16) %显示复角(10)text(x,y,num2str(r),'FontSize',16) %显示模(10)title('两复数之和','FontSize',16) %显示标题z=z2-z1; %两复数之差x=real(z); %取复数的实部y=imag(z); %取复数的虚部figure %创建图形窗口quiver(0,0,x1,y1,0) %在复平面画第1个复数(11)hold on%保持图像quiver(0,0,x2,y2,0) %画第2个复数quiver(x1,y1,x,y,0) %画复数之差axis equal%使坐标刻度相等grid on%加网格title('两复数之差','FontSize',16) %标题[说明](1)变量i表示虚数单位,可用于形成复数。

实验1-复数运算

实验1-复数运算

实验1任务:编写一个Java程序,实现复数的加法、减法和乘法运算。

要求与提示:编写一个类ComplexNumber实现复数的运算:(1)复数类ComplexNumber 的属性:☐m_realPart :实部,代表复数的实数部分;☐m_imaginaryPart :虚部,代表复数的虚数部分;(2)复数类ComplexNumber 的方法:☐ComplexNumber(double r , double i ) :构造方法,创建复数对象的同时完成复数的实部、虚部的初始化,r为实部的初值,i为虚部的初值;☐getRealPart() :获得复数对象的实部;☐getImaginaryPart() :获得复数对象的虚部;☐setRealPart(double d ) :把当前复数对象的实部设置为给定的形式参数的数字;☐setImaginaryPart ( double d ) :把当前复数对象的虚部设置为给定的形式参数的数字;☐complexAdd(ComplexNumber c) :当前复数对象与形式参数复数对象相加,所得的结果也是复数值,返回给此方法的调用者;☐complexMinus(ComplexNumber c) :当前复数对象与形式参数复数对象相减,所得的结果也是复数值,返回给此方法的调用者;☐complexMulti(ComplexNumber c) :当前复数对象与形式参数复数对象相乘,所得的结果也是复数值,返回给此方法的调用者;☐print() :以数学中的复数形式打印输出复数的值,比如:10-2i(3)编写测试类,在测试类中对该类进行使用,检验复数运算是否正确。

(4)编译运行程序,对程序进行调试和修改。

1。

运用C语言编写复数的四则运算

运用C语言编写复数的四则运算

运用C语言编写复数的四则运算一、需求分析1.设计一个可进行复数运算的演示程序2.实现以下六种基本运算:〔1〕由于输入的实部和虚部生成一个复数;〔2〕两个复数求和;〔3〕两个复数求差;〔4〕两个复数求积;〔5〕从已知复数中别离出虚部。

运算结果一相应的复数或实数的表示形式显示。

3.程序执行的命令包括:4.〔1〕建立一个复数,然后根据提示用户输入两个复数,使得能同时进行两个复数的加.减.乘运算。

(2)输入形式和输入值得范围:分别输入两个复数,其格式为:a+bi用enter结束输入。

(3)输出形式:按程序规定输出其运算值。

如:运算后只有实数时只输出实数虚部部分不表示,反之一样〔1〕0,0;0,0;应输出“0”〔2〕3.1,0;4.22, 8.9; 应输出“7.32+i8.9”(3)-1.33, 2.34; 0.1, -6.5; 应输出“-1.23-i4.16”(4)0, 9.7; -2.1, -9.7;应输出“-2.1”(5)7.7,-8;-7.7,0;应输出“-i8”二.概要分析1.为实现上述程序的功能,需要定义一个表示复数的抽象数据类型。

2.本程序包含的函数:〔1〕主函数main〔〕;(2)构造函数typedef struct〔〕;(3)调用函数Complex createComplex(float a,float b)Complex add(Complex z1,Complex z2)Complex jian(Complex z1,Complex z2)Complex cheng(Complex z1,Complex z2)void printComplex(Complex z);各函数关系如下:(5)主函数伪代码main( ){说明一个构造函数Complex;定义两个实数和虚数分别为z1,z2;提示输入实数和虚数z1,z2;调用子函数;提示输入+ - *;根据输入的符号判断输入的复数做何运算{输入+时,调用加法子函数,打印输出;输入-时,调用加法子函数,打印输出;输入*时,调用加法子函数,打印输出;}}三.详细设计1.主函数及其他函数#include<stdio.h>#include<math.h>typedef struct{float re;float im;} Complex;Complex createComplex(float a,float b) //编写一个函数生成复数// {Complex z;z.re=a;z.im=b;return z;}void printComplex(Complex z) //输出复数并控制其格式// {if(z.re==0&&z.im==0)printf("0\n");else if(z.re!=0&&z.im==0)printf("%.2f\n",z.re);else if(z.re==0&&z.im!=0){if(z.im>0)printf("i%.2f\n",z.im);else if(z.im<0)printf("-i%.2f\n",fabs(z.im));}else{if(z.im>0)printf("%.2f+i%.2f\n",z.re,z.im);elseprintf("%.2f-i%.2f\n",z.re,fabs(z.im));}}Complex add(Complex z1,Complex z2){Complex z;z.re=z1.re+z2.re;z.im=z1.im+z2.im;return z;}Complex jian(Complex z1,Complex z2){Complex z;z.re=z1.re-z2.re;z.im=z1.im-z2.im;return z;}Complex cheng(Complex z1,Complex z2) {Complex z;z.re=z1.re*z2.re-z1.im*z2.im;z.im=z1.re*z2.im+z1.im*z2.re;return z;}main(){float a,b,c,d;Complex z1,z2,c1,c2,c3;printf("请输入元素");scanf("%f%f%f%f",&a,&b,&c,&d); //输入元素并调用函数生成复数z1,z2;并输出//z1=createComplex(a,b);z2=createComplex(c,d);printf("产生的两个复数为:");printComplex(z1);printComplex(z2);c1=add(z1,z2);c2=jian(z1,z2);c3=cheng(z1,z2);printf("这两个复数的和差积:");printComplex(c1);printComplex(c2);printComplex(c3);}四.调试及分析1.由于开始对于结构体使用并不熟悉,使用时语法错误很多,需要多加使用。

C++程序复数运算ppt

C++程序复数运算ppt

complex(double r=0.0,double i=0.0){real=r;imag=i;} //构造函数 friend complex operator +(complex &c1, complex &c2); //运算符 + 重载成员函数

• •
friend complex operator -(complex &c1, complex &c2)• • • • • • •
complex operator *(complex &c1, complex &c2) //重载运算符函数实现 { complex c; c.real=c1.real*c2.real; c.imag=c1.imag*c2.imag; return c; } complex operator /(complex &c1, complex &c2) //重载运算符函数实现 { complex c; c.real=c1.real/c2.real; c.imag=c1.imag/c2.imag; return c; }
• • • • • • • • • • • • •
cout<<"c3=c1+c2="; c3.display(); c3=c1-c2; //使用重载运算符完成复数减法 cout<<"c3=c1-c2="; c3.display(); c3=c1*c2; //使用重载运算符完成复数乘法 cout<<"c3=c1*c2="; c3.display(); c3=c1/c2; //使用重载运算符完成复数除法 cout<<"c3=c1/c2="; c3.display(); return 0; }

复数的代数运算乘除ppt课件

复数的代数运算乘除ppt课件

思考:设z=a+bi (a,b∈R ),那么
ห้องสมุดไป่ตู้
2a
2bi
a2 b2
另外不难证明:
引例:化简 1 2 (1 2)(2 3) 2 3 (2 3)(2 3)
复数除法的法则:
(a bi) (c di) a bi c di
(a bi)(c di) (c di)(c di)
(ac
复数的乘法与多项式的乘法是类似的.
例3设 Z 1 2 3i, Z 2 3 2i, 计算:
(1)Z 1

Z
; ( 2)
2
2
Z1
练习.计算:
(1) (1 4i) (1 4i)
(2) (1 4i) (7 2i) (1 4i)
(3) (3 2i)2
共轭复数:两复数 a bi与a bi 叫做互为共轭复数,当 b 0时
即对于任何z1 , z2 ,z3 ∈C,有
z1 z2 z2 z1 , (z1 z2 ) z3 z1 (z2 z3 ), z1(z2 z3 ) z1z2 z1z3.
例 2.计算:
(1) (1 4i)(7 2i)
(2)(7 2i)(1 4i)
(3)[(3 2i)(4 3i)](5 i) (4)(3 2i)[(4 3i)(5 i)]
(a+bi)÷(c+di)=
ac c2
bd d2
bc c2
ad d2
i
2.共轭复数
两复数 a bi与a bi 叫做互为共轭复数;两复数互为共轭 复数,则它们的乘积为实数。
四、正本作业:课本 68 页习题 1(3)(4)(5)(6)
1 i2 i
补充:(1)
i3
(2) i i2 i3 i4 i5

程序4-2 复数运算_C#程序设计基础与实践_[共2页]

程序4-2  复数运算_C#程序设计基础与实践_[共2页]

1303.程序的运行结果本程序的运行结果如图4-18 所示。

程序4-2 复数运算本程序执行的任务如下。

(1)定义一个复数类,其中两个数据成员分别表示复数的实部和虚部。

方法成员分别完成两个复数的加法、减法、乘法以及复数的求模运算。

(2)创建几个复数类的对象,验证复数类中的方法。

1.算法及程序结构本程序中,按顺序执行以下操作。

(1)定义描述复数的类Complex,其中包括以下内容。

● 两个私有数据成员real和image,分别表示数的实部和虚部。

● 两个读写属性Real和Image,分别访问两个数据成员real和image。

● 3个构造函数:分别为无参的默认构造函数、仅有实部的构造函数以及既有实部又有虚部的构造函数。

● 4个进行复数运算的方法add、sub、mul和toModul,分别执行复数的加法、减法、乘法和求模运算。

● 重载ToString函数,返回各种不同形式的复数,使得对象以接近数学表达式的形式显示出来。

(2)在自动生成的Program类的主方法中,执行对复数类Complex的测试。

● 定义4个复数,即4个Complex类的对象:实部和虚部均为零的c1、仅有实部的c2、既有实部又有虚部的c3和c4。

● 输出前两个复数c1 和c2。

● 计算并输出后两个复数c3和c4的和与差。

● 分别计算并输出后两个复数c3和c4的模。

● 计算并输出后两个复数c3和c4的积。

2.程序程序源代码如下。

//程序4-2_ 复数运算:加法、减法、求模、乘法using System;namespace 复数运算{ class Program{static void Main(string[] args){ //定义复数:Complex类的实例Complex c1=new Complex();Complex c2 = new Complex(9);Complex c3 =new Complex(5, 6);Complex c4 = new Complex(3, 4);//调用方法:复数运算、输出Console.WriteLine("c1 = {0}", c1);Console.WriteLine("c2 = {0}", c2);Console.WriteLine("({0})+({1})= {2}",c3,c4,c3.add(c4));图4-18 程序4-1的运行结果。

3.2复数的四则运算ppt课件

3.2复数的四则运算ppt课件

O
x
O Z 1 + O Z 2 = (a + c,b + d).
这 说 明 两 个 向 量 O Z 1和 O Z 2的 和 就 是 复 数 (a+c)+(b+d)i对 应 的 向 量 .
3
2.复数的减法
复数的减法就是加法的逆运算. (a+bi)-(c+di)=(a-c)+(b-d)i.
复数的减法法则: 实部与实部,虚部与虚部分别相减.
2001i20022003i200450122i10021002i设o是原点向量对应的复数分别为23i32i那么向量对应的复数是在复平面内对应的点位于cdi是任意两个复数那么它们的积换成1把实部与虚部分别合并即可
3.2复数的四则运算
1
1.复数的加法
我们规定,复数的加法法则如下: 设z1=a+bi, z2=c+di 是任意两个复数,那么 (a+bi)+(c+di)=(a+c)+(b+d)i. 即:两个复数相加就是 实部与实部,虚部与虚部分别相加.
很明显,两个复数的和仍然是一个确定的复数. 复数的加法满足交换律、结合律
2
如图所示:
y Z
Z2(c,d)

O
Z
1,O
Z

2


复 数 a + b i,c + d i对 应 ,
则 O Z 1 = (a,b),O Z 2 = (c,d). 由平面向量的坐标运算,
Z1(a,b)
得 OZ = OZ1+OZ2
10
例题1
计算 (1-2i)(3+4i)(-2+i)

C语言复数的运算(实验报告)

C语言复数的运算(实验报告)

实验报告题目:复数的四则运算班级:13信管姓名:白浩然学号:201340403034 完成日期:2014.05.21一、需求分析1.本演示程序中复数由两个相互之间存在次序关系的实数构成。

2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。

3.程序执行的命令包括:1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积;5)从已知复数中分离出实部;6)从已知复数中分离出虚部。

4.测试数据:1)构造复数:2)复数求和:3)复数求差:4)复数求积:5)提取实部:6)提取虚部:二、编码实现#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("%f %f",&r11,&r12);InitComplex(c1,r11,r12);printf("输入c2的实部和虚部:\n");scanf("%f %f",&r21,&r22);InitComplex(c2,r21,r22);MulComplex(c,c1,c2);printf("结果为:%f+%fi\n",c.real,c.imag);break;case 5:printf("输入复数的实部和虚部:\n");scanf("%f %f",&r1,&r2);InitComplex(c,r1,r2);RealComplex(c,r);printf("实部为:%f\n",r);break;case 6:printf("输入复数的实部和虚部:\n");scanf("%f %f",&r1,&r2);InitComplex(c,r1,r2);ImagComplex(c,r);printf("虚部为:%f\n",r);break;default:printf("结束");}scanf("%d",node);}}三、调试分析1.开始时文件后缀写成了“.c”,导致调试多次无法运行,后来改为“.cpp”;2.多处“%f”写成了“%d”,导致程序不能正常运行;3.定义结构体时,最后一个“}”后忘记加“;”,导致程序出现错误,以后应多加注意。

复数运算的演示程序.

复数运算的演示程序.

复数运算的演示程序【实验题目】实验1. 抽象数据类型.【问题描述】用C 或C++语言设计并实现一个可进行复数运算的演示程序。

【基本要求】1.由输入的实部和虚部生成一个复数2.两个复数求和3.两个复数求差4.两个复数求积【实现提示】定义复数为由两个相互之间存在次序关系的实数构成的抽象数据类型,则可以利用实数的操作来实现复数的操作。

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四)一、【实验构思(Conceive )】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)复数由实部和虚部构成,可以通过一个含有两个元素的结构体来实现复数的表示,并且通过接受用户的输入,可以实现复数的生成。

对于复数的四则运算,可以编写四个函数,通过函数的调用来实现相应的运算。

加减法:(a + bi )±(c + di )=(a ± c )+(b ± d )i乘法:(a + bi )*(c + di )=(ac - bd )+(ad + bc )i除法:2222()()()()a bi a bi c di ac bd bc ad i c di c d c d++-+-==+++二、【实验设计(Design)】(15%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)功能:能够显示和构造复数,并且能进行复数的加减乘除运算。

主程序模块:void main(){float a,b,c,d;fushu f1,f2,plu,min,mul;printf("请按实部虚部的顺序依次输入两个复数:");scanf("%f%f%f%f",&a,&b,&c,&d);getfushu (f1,a,b); /*调用getfushu函数,构造复数f1*/getfushu (f2,c,d); /*调用getfushu函数,构造复数f2*/printf("\n您输入的第一个复数是:");printfushu (f1);printf("\n您输入的第二个复数是:");printfushu (f2);plusfushu (plu,f1,f2); /*调用plusfushu函数,使复数f1,f2相加*/printf("\n相加结果为:");printfushu (plu);minusfushu (min,f1,f2); /*调用minuscomplex函数,使复数f1,f2相减*/printf("\n相减结果为:");printfushu (min);multifushu (mul,f1,f2); /*调用multifushu函数,使f1,f2相乘*/printf("\n相乘结果为:");printfushu (mul);printf("\n");}子程序模块:void getfushu (fushu& f,float a,float b); /*构造复数*/void plusfushu (fushu& plu, fushu f1, fushu f2); /*实现复数的相加*/void minusfushu (fushu& min, fushu f1, fushu f2); /*实现复数的相减*/void multifushu (fushu& mul, fushu f1, fushu f2); /*实现复数的相乘*/void printfushu (fushu f); /*显示复数*/三、【实现描述(Implement)】(25%)(本部分应包括:抽象数据类型具体实现的函数原型说明、关键操作实现的伪码算法、函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。

C++ 29复数的四则运算

C++ 29复数的四则运算

本案例知识要点●复数类的定义●+、-、*、/运算符重载●输出函数的设计一、案例需求1.案例描述复数a=x1+y1i和a=x2+y2i的四则运算公式如下:,,试编写程序对输入的两个复数进行加减乘除四则运算,并在屏幕上输出计算结果。

2.案例效果图图29-1 案例效果图3.功能说明(1)进行加“+”,减“-”,乘“*”,除“/”运算符重载,对输入的两个复数对象输出其运算结果。

(2)当第二个复数b的实部和虚部同时为0时,除法不能运算,需要提示。

(3)设计输出函数,对于计算结果的虚部为负数的情况能进行处理。

如2-2i不要输出为2+-2i。

二、案例分析根据案例需求,需要利用MFC环境定义了一个菜单;一个输入对话框类,提供个两个复数的输入界面;另外定义一个complex类,在complex类中定义了数据成员:实部值和虚部值,定义了成员函数:声明了友元加号运算符重载函数、友元减号运算符重载函数、友元乘号运算符重载函数、友元除号运算符重载函数、实部值获取函数和虚部值获取函数。

最后在视图区输出了两个复数的运算结果。

本案例的重点是如何使用运算符重载函数来进行复数对象的四则运算,因为在MFC环境中不能重载输入和输出运算符,需要独立设计复数输出函数。

本案例的难点在于复数的虚部计算结果为负数时的输出函数设计。

三、案例设计1.类的设计本案例需要设计一个类complex。

图29-2 complex类图●数据成员double real;复数实部。

double imag;复数虚部。

●函数成员complex();默认构造函数。

complex(double,double);带参构造函数。

friend complex operator + (complex &c1,complex&c2);友元运算符重载函数+。

friend complex operator - (complex &c1,complex&c2);友元运算符重载函数-。

Java程序完成复数的加减乘模的运算

Java程序完成复数的加减乘模的运算

Java程序完成复数的加减乘模的运算实习目的:用java实现对复数的基本操作,加,减,乘,除,取模运算。

程序代码:代码一:import java.util.Scanner;public class fushu{public float a,b; //定义成员变量fushu() //构造函数1{}fushu(float x,float y) //构造函数2{a=x;b=y;}public static void main(String[] args) //主函数{System.out.println("选择你要进行操作的序号:1.两个复数加;2.减;3.乘;4.除;5.求模;\n输出你的选择,按回车。

");Scanner in=new Scanner(System.in); //从键盘获得选择int i=in.nextInt();System.out.println(i);switch(i){case 1: //加{System.out.println("第一个实部:")float a1=in.nextFloat();System.out.println("第一个虚部:"); float b1=in.nextFloat();fushu c1=new fushu(a1,b1); System.out.println("第2个实部:"); float a2=in.nextFloat(); System.out.println("第2个虚部:"); float b2=in.nextFloat();fushu c2=new fushu(a2,b2); fushu m=jia(c1,c2);System.out.println("结果为:"); print(m);break;}case 2: //减{System.out.println("第一个实部:"); float a1=in.nextFloat(); System.out.println("第一个虚部:"); float b1=in.nextFloat();fushu c1=new fushu(a1,b1); System.out.println("第2个实部:"); float a2=in.nextFloat(); System.out.println("第2个虚部:"); float b2=in.nextFloat();fushu c2=new fushu(a2,b2); fushu m=jian(c1,c2); System.out.println("结果为:"); print(m);}case 3: //乘{System.out.println("第一个实部:");float a1=in.nextFloat();System.out.println("第一个虚部:");float b1=in.nextFloat();fushu c1=new fushu(a1,b1);System.out.println("第2个实部:");float a2=in.nextFloat();System.out.println("第2个虚部:");float b2=in.nextFloat();fushu c2=new fushu(a2,b2);fushu m=cheng(c1,c2);System.out.println("结果为:");print(m);}case 4: //除{System.out.println("第一个实部:");float a1=in.nextFloat();System.out.println("第一个虚部:");float b1=in.nextFloat();fushu c1=new fushu(a1,b1);System.out.println("第2个实部:");float a2=in.nextFloat();System.out.println("第2个虚部:");float b2=in.nextFloat();fushu c2=new fushu(a2,b2);if(b2==0&&a2==0) //判断能否相除{System.out.println("第二个复数为零,无法计算。

复数运算

复数运算

设计一个可进行复数运算的演示程序。

要求实现下列六种基本运算:1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积,5)从已知复数中分离出实部;6)从已知复数中分离出虚部。

运算结果以相应的复数或实数的表示形式显示p#include "stdio.h"#include "complex.h"void main(){complex complex_add(complex x,complex y);complex complex_sub(complex x,complex y);complex complex_mul(complex x,complex y);complex complex_shibu(complex x,complex y);complex complex_xubu(complex x,complex y);complex a,b,sum,dif,pro,shi,xu;printf("请输入第一个数的实部和虚部:\n");scanf("%f%f",&a.real,&a.image);printf("请输入第二个数的实部和虚部:\n");scanf("%f%f",&b.real,&b.image);sum=complex_add(a,b);dif=complex_sub(a,b);pro=complex_mul(a,b);shi=complex_shibu(a,b);xu=complex_xubu(a,b);printf("两个复数的和为%f + i%f\n",sum.real,sum.image);printf("两个复数的差为%f + i%f\n",dif.real,dif.image);printf("两个复数的积为%f + i%f\n",pro.real,pro.image);printf("两个复数的实部为%f和%f\n",shi.real,shi.image);printf("两个复数的虚部为%f和%f\n",xu.real,xu.image);}complex_p#include "stdio.h"#include "complex.h"complex complex_add(complex x,complex y){complex sum;sum.real =x.real + y.real;sum.image =x.image + y.image;return sum;}//加法complex complex_sub(complex x,complex y) {complex sub;sub.real =x.real - y.real;sub.image =x.image - y.image;return sub;}//减法complex complex_mul(complex x,complex y) {complex mul;mul.real =x.real*y.real-x.image*y.image; mul.image =x.real*y.image+x.image*y.real; return mul;}//乘法complex complex_shibu(complex x,complex y) {complex shibu;shibu.real =x.real;shibu.image =y.real;return shibu;}//分离实部complex complex_xubu(complex x,complex y) {complex xubu;xubu.real =x.image;xubu.image =y.image;return xubu;}//分离实部complec.h#include "stdio.h"typedef struct complex{float real;float image;}complex;。

c语言实现复数运算

c语言实现复数运算

在C语言中,我们可以使用结构体(`struct`)来创建复数数据类型。

下面是一个基本的复数运算的示例。

```c#include <stdio.h>// 定义复数结构体typedef struct {double real; // 实部double imag; // 虚部} Complex;// 加法Complex add(Complex a, Complex b) {Complex result;result.real = a.real + b.real;result.imag = a.imag + b.imag;return result;}// 减法Complex subtract(Complex a, Complex b) {Complex result;result.real = a.real - b.real;result.imag = a.imag - b.imag;return result;}// 乘法Complex multiply(Complex a, Complex b) {Complex result;result.real = a.real * b.real - a.imag * b.imag;result.imag = a.real * b.imag + a.imag * b.real;return result;}// 打印复数void printComplex(Complex c) {if (c.imag < 0) {printf("%.2f - %.2fi\n", c.real, fabs(c.imag)); } else {printf("%.2f + %.2fi\n", c.real, c.imag);}}int main() {Complex num1 = {3.0, 2.0}; // 定义复数num1,实部为3.0,虚部为2.0Complex num2 = {1.0, -1.0}; // 定义复数num2,实部为1.0,虚部为-1.0Complex sum = add(num1, num2); // 计算两个复数的和Complex diff = subtract(num1, num2); // 计算两个复数的差Complex prod = multiply(num1, num2); // 计算两个复数的乘积printComplex(sum); // 打印和printComplex(diff); // 打印差printComplex(prod); // 打印乘积return 0;}```这个程序定义了一个复数结构体,并实现了加、减、乘运算。

C++程序复数加减乘除

C++程序复数加减乘除

#include<iostream.h>void sort(int array[],int n){int i,j,min=0;for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(array[i]>array[i+1]){min=array[i];array[i]=array[i+1];array[i+1]=min;}for(i=0;i<n;i++){cout<<array[i]<<" ";if(i==n-1) cout<<"\n";}}void main(){cout<<"Please input the number of Numbers(输入数字的个数): "; int n;cin>>n;cout<<"Enter the array(输入数据): ";int array[100],i;for(i=0;i<n;i++)cin>>array[i];sort(array,n);}#include<iostream.h>class Complex{public:Complex(){real=0;imag=0;}void SetCom(float r,float i){real=r;imag=i;}void Print(Complex C){if(C.imag<0)cout<<C.real<<C.imag<<"i"<<endl; elsecout<<C.real<<"+"<<C.imag<<"i"<<endl; }void Add(Complex C1,Complex C2){real=C1.real+C2.real;imag=C1.imag+C2.imag;Print(*this);}void DEC(Complex C1,Complex C2){real=C1.real-C2.real;imag=C1.imag-C2.imag;Print(*this);}void MUL(Complex C1,Complex C2){real=C1.real*C2.real-C1.imag*C2.imag; imag=C1.real*C2.imag+C1.imag*C2.real; Print(*this);}void DIV(Complex C1,Complex C2){real=(C1.real*C2.real+C1.imag*C2.imag)/(C2.real*C2.real+C2.imag*C2.im ag);imag=(C1.imag*C2.real-C1.real*C2.imag)/(C2.real*C2.real+C2.imag*C2.im ag);Print(*this);}private:float real,imag;};void main(){Complex C1,C2,C;float rx,iy;cout<<"输入第一个复数的\n实部虚部\n";cin>>rx>>iy;C1.SetCom(rx,iy);cout<<"输入第二个复数的\n实部虚部\n"; cin>>rx>>iy;C2.SetCom(rx,iy);cout<<"相加:\n";C.Add(C1,C2);cout<<"相减:\n";C.DEC(C1,C2);cout<<"相乘:\n";C.MUL(C1,C2);cout<<"相除:\n";C.DIV(C1,C2);}10#include <iostream.h>#include <math.h>class Complex{double rpart;double ipart;public:Complex(double rp=0.0,double ip=0.0){rpart=rp;ipart=ip;}Complex operator+(Complex c);Complex operator-(Complex c);friend Complex operator mul(Complex a,Complex b );friend Complex operator/(Complex a,Complex b );void print();};Complex Complex::operator+(Complex c){Complex temp;temp.rpart=rpart+c.rpart;temp.ipart=ipart+c.ipart;return temp;}Complex Complex::operator-(Complex c){Complex temp;temp.rpart=rpart-c.rpart;temp.ipart=ipart-c.ipart;return temp;}Complex Complex::operator mul(Complex C1,Complex C2){Complex temp;temp.rpart=C1.rpart*C2.rpart-C1.ipart*C2.ipart;temp.ipart=C1.rpart*C2.ipart+C1.ipart*C2.rpart;return temp;}Complex Complex::operator/(Complex C1,Complex C2){Complex temp;temp.rpart=(C1.rpart*C2.rpart+C1.ipart*C2.ipart)/(C2.rpart*C2.rpart+C2.ipart*C2.ipart); temp.ipart=(C1.ipart*C2.rpart-C1.rpart*C2.ipart)/(C2.rpart*C2.rpart+C2.ipart*C2.ipart); return temp;}void Complex::print(){cout<<rpart;if(ipart>0)cout<<"+";if(ipart!=0)cout<<ipart<<"i\n";}int main(){Complex a(double,double),b(double,double),c1,c2,c3,c4; c1=a+b;c2=a-b;c3=a*b;c4=a/b;cout>>"输入a的实部\n和虚部\n:";cin>>rp>>ip;cout>>"输入b的实部\n和虚部\n:";cin>>rp>>ip;cout<<"a和b相加是:"<<c1<<endl;cout<<"a和b相减是:"<<c2<<endl;cout<<"a和b相乘是:"<<c3<<endl;cout<<"a和b相除是:"<<c4<<endl;}10。

《复数的四则运算》复数PPT(复数的乘、除运算)

《复数的四则运算》复数PPT(复数的乘、除运算)

C.3-i
P P T模板:www.1ppt.c om /m oba n/
P P T素材:www.1ppt.c om /suc a i/
P P T背景:www.1ppt.c om /be ij ing/
P P T图表:www.1ppt.c om /tubia o/
P P T下载:www.1ppt.c om /xia za i/
英语课件:/kejian/y ingy u/ 美术课件:/kejian/meishu/
科学课件:/kejian/kexu e/ 物理课件:/kejian/wuli/
化学课件:/kejian/huaxue/ 生物课件:/kejian/shengwu/
个人简历:www.1ppt.c om /j ia nli/
试卷下载:www.1ppt.c om /shiti/
教案下载:www.1ppt.c om /j ia oa n/
手抄报:www.1ppt.c om /shouc ha oba o/
P P T课件:www.1ppt.c om /ke j ia n/
历史课件:www.1ppt.c om /ke j ia n/lishi/
判断(正确的打“√”,错误的打“×”)
(1)两个复数的积与商一定是虚数.(× )
(2)两个共轭复数的和与积是实数.(√ ) (3)复数加减乘除的混合运算法则是先乘除,后加减.( √ )
栏目 导引
(1+i)(2-i)=(
A.-3-i
科学课件:/kejian/kexu e/ 物理课件:/kejian/wuli/
化学课件:/kejian/huaxue/ 生物课件:/kejian/shengwu/
地理课件:www.1ppt.c om /ke j ia n/dili/

复数的乘除程序c++

复数的乘除程序c++

//2.定义一个复数类,通过重载运算符:*,/,直接实现二个复数之间的乘除运算。

//编写一个完整的程序,测试重载运算符的正确性。

要求乘法"*"用友元函数实现重载,//除法"/"用成员函数实现重载。

//两复数相乘的计算公式为:(a+b i)*(c+d i)=(ac-bd )+(ad+bc) i//两复数相除的计算公式为:(a+b i)/(c+d i)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d) i#include<iostream>using namespace std;class complex{private:float real,image;public:complex(){}complex(float re,float im){real=re;image=im;}void show(){if(image>0)cout<<real<<"+"<<image<<"i"<<endl;if(image==0)cout<<real<<endl;if(image<0)cout<<real<<image<<"i"<<endl;}complex operator /(complex c){returncomplex((real*c.real+image*c.image)/(c.real*c.real+c.image*c.image),(image*c.real-real*c.imag e)/(c.real*c.real+c.image*c.image));}friend complex operator*(complex c1,complex c2){returncomplex(c1.real*c2.real-c1.image*c2.image,c1.real*c2.image+c1.image*c2.real);}};void main(){int n=1;while(n!=0){complex a,b,c,d;float re,im;cout<<"请输c1的实部与虚部"<<endl;cin>>re>>im;a=complex(re,im);cout<<"请输c2的实部与虚部"<<endl;cin>>re>>im;b=complex(re,im);cout<<"a=";a.show();cout<<"b=";b.show();c=a*b;d=a/b;cout<<"c=";c.show();cout<<"d=";d.show();cout<<"继续输入1,结束0"<<endl;cin>>n;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

复数运算的演示程序【实验题目】实验1.抽象数据类型•【问题描述】用C或C++语言设计并实现一个可进行复数运算的演示程序。

【基本要求】1.由输入的实部和虚部生成一个复数2.两个复数求和3.两个复数求差4.两个复数求积【实现提示】定义复数为由两个相互之间存在次序关系的实数构成的抽象数据类型,则可以利用实数的操作来实现复数的操作。

(下面的内容由学生填写,格式统一为,字体:楷体,行距:固定行距18,字号:小四) 一、【实验构思(Conceive )】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)复数由实部和虚部构成,可以通过一个含有两个元素的结构体来实现复数的表示,并且通过接受用户的输入,可以实现复数的生成。

对于复数的四则运算,可以编写四个函数,通过函数的调用来实现相应的运算。

加减法:(a + bi )±(c + di) = (a ± c ) + (b ± d) i乘法:(a + bi) * (c + di) = (ac - bd ) + (ad + bc ) ia bi _ (a bi)(c _di) (ac bd)(bc -ad)i除、:c di _ c2 d2「c2 d2二、【实验设计(Design)】(15%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)功能:能够显示和构造复数,并且能进行复数的加减乘除运算。

主程序模块:void main() {float a,b,c,d;fushu f1,f2,plu,min,mul;printf(" 请按实部虚部的顺序依次输入两个复数:");scanf("%f%f%f%f",&a,&b,&c,&d);getfushu (f1,a,b); /* 调用getfushu 函数,构造复数f1*/ getfushu (f2,c,d); /* 调用getfushu 函数,构造复数f2*/ printf("\n 您输入的第一个复数是:"); printfushu (f1); printf("\n 您输入的第二个复数是:");printfushu (f2);plusfushu (plu,f1,f2); /* 调用plusfushu 函数,使复数f1,f2 相加*/printf("\n 相加结果为:");printfushu (plu);minusfushu (min,f1,f2); /* 调用minuscomplex 函数,使复数f1,f2 相减*/ printf("\n 相减结果为:");printfushu (min); multifushu (mul,f1,f2); /* 调用multifushu 函数,使f1,f2 相乘*/ printf("\n 相乘结果为:");printfushu (mul); printf("\n");} 子程序模块:void getfushu (fushu& f,float a,float b); /* 构造复数*/ void plusfushu (fushu& plu, fushu f1, fushu f2); /* 实现复数的相加*/ void minusfushu (fushu& min, fushu f1, fushu f2); /* 实现复数的相减*/ void multifushu (fushu& mul, fushu f1, fushu f2); /* 实现复数的相乘*/ void printfushu (fushu f); /* 显示复数*/、【实现描述( Implement )】(25%)本部分应包括:抽象数据类型具体实现的函数原型说明、法、关键操作实现的伪码算函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。

)void getfushu (fushu& f,float a,float b);通过接受两个数据来构造一个复数f,其中a为复数的实部,b为复数的虚部。

void plusfushu (fushu& plu, fushu f1, fushu f2); 接收两个复数,并对其进行加法运算,将运算结果保存在plu 里。

void minusfushu (fushu& min, fushu f1, fushu f2); 对复数f1,f2 进行减法运算,并将运算结果保存在min 里。

void multifushu (fushu& mul, fushu f1, fushu f2);对复数f1,f2 进行乘法运算,并将运算结果保存在mul 里。

void printfushu (fushuf);将复数f 显示出来。

四、【测试结果( Testing )】(20%)(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结)测试一:输入的两个复数分别为3.1 和4.22+8.9i ,其操作及显示结果如下请按实部虚部的顺序依次输入两个复数:3.1 0 4.22 8.9 您输入的第一个复数是:3.100000您输入的第二个复数是:4.220000+8.900000i 相加结果为:7.320000+8.900000i 相减结果为:-1.120000-8.900000i 相乘结果为:13.081999+27.589998i测试二:输入的两个复数分别为9.7i和-2.1-9.7i,其操作及显示结果如下请按实部虚部的顺序依次输入两个复数:0 9.7 -2.1 -9.7 您输入的第一个复数是:+9.700000i您输入的第二个复数是:-2.100000-9.700000i相加结果为:-2.100000相减结果为:2.100000+19.400000i相乘结果为:94.089996-20.369999i四、【实验总结】(10%)(本部分应包括:自己在实验中完成的任务,注意组内的任意一位同学都必须独立完成至少一项接口的实现;对所完成实验的经验总结、心得) 实验总结、心得:经过这次实验,发现模块化编程能够使得程序变得简练,清晰,便于读者阅读,利于自己改进。

实验中,从复数的构造,到加减乘的运算,再到结果的输出都是通过函数来实现的。

另一方面,在这次实验中发现自己对基本知识的掌握还是不牢固,运行程序时出现了好多错误,后面又通过仔细的观察,才找出了错误的地方。

这次实验,让我复习了C 的使用方法,并熟练掌握了结构体的定义和使用。

这次实验还让我对抽象数据类型的含义有了更深的了解。

五、【项目运作描述( Operate )】(10%) (本部分应包括:项目的成本效益分析,应用效果等的分析。

) 该项目投入了较多的时间,进行了多次修改,效益方面还可以,能进行简单的复数四则运算。

应用效果上还不尽人如意,程序简单,界面也相当简陋,进行一些不合理的输入时,得不到理想的回应,缺乏人性化设计,在用户提示上有所欠缺。

六、【代码】(10%)(本部分应包括:完整的代码及充分的注释。

注意纸质的实验报告无需包括此部分格式统一为,字体: Georgia , 行距: 固定行距12,字号: 小五)#include<stdio.h>#include<stdlib.h>typedef struct{float real;float imag;}fushu;void getfushu(fushu& f,float a,float b);void plusfushu(fushu& plu,fushu f1, fushu f2); void minusfushu(fushu& min,fushu f1, fushu f2); void multifushu(fushu& mul,fushu f1, fushu f2); void printfushu(fushu f);void getfushu(fushu& f,float a,float b){f.real=a;f.imag=b; void plusfushu(fushu& plu,fushu f1,fushu f2) {plu.real=f1.real+f2.real; plu.imag=f1.imag+f2.imag;}void minusfushu(fushu& min,fushu f1,fushu f2) {min.real=f1.real-f2.real; min.imag=f1.imag-f2.imag;}void multifushu(fushu& mul,fushu f1,fushu f2) {mul.real=(f1.real*f2.real)-(f1.imag*f2.imag); mul.imag=(f1.real*f2.imag)+(f1.imag*f2.real); }void printfushu(fushu f) {if (f.real!=0) printf("%lf",f.real);if (f.imag>0){ printf("+");printf("%lfi",f.imag);}else if(f.imag<0){ printf("%lfi",f.imag);}}void main(){float a,b,c,d;fushu f1,f2,plu,min,mul;printf(" 请按实部虚部的顺序依次输入两个复数:"); scanf("%f%f%f%f",&a,&b,&c,&d);getfushu(f1,a,b);getfushu(f2,c,d);printf("\n 您输入的第一个复数是:"); printfushu(f1);printf("\n 您输入的第二个复数是:"); printfushu(f2);plusfushu(plu,f1,f2); printf("\n 相加结果为:"); printfushu(plu);minusfushu(min,f1,f2); printf("\n 相减结果为:"); printfushu(min);multifushu(mul,f1,f2); printf("\n 相乘结果为:"); printfushu(mul);printf("\n");}。

相关文档
最新文档