c语言复数四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言复数四则运算相关的知识,希望对你有一定的参考价值。

设计一个可进行复数运算的演示程序。要求实现下列六种基本运算:1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积,5)从已知复数中分离出实部;6)从已知复数中分离出虚部。运算结果以相应的复数或实数的表示形式显示(最好用结构体的方法)

我们设计一个可进行复数运算的演示程序。要求实现下列六种基本运算
:1)由输入的实部和虚部生成一个复数
;2)两个复数求和;
3)两个复数求差;
4)两个复数求积,
5)从已知复数中分离出实部;
6)从已知复数中分离出虚部。
运算结果以相应的复数或实数的表示形式显示(最好用结构体的方法)
要是能用c++和stl,可以这样写#include <complex>#include <iostream>void main() using namespace std; complex<double> a(3, 2); complex<double> b(5, 6); complex<double> result(0,0); result = a*b/(a+b); cout << result;
下面是具体的操作:

stdio.h>
#include<conio.h>
#include<stdlib.h>
#define ERR -1
#define MAX 100 /*定义堆栈的大小*/
int stack[MAX]; /*用一维数组定义堆栈*/
int top=0; /*定义堆栈指示*/

int push(int i) /*存储运算数,入栈操作*/

if(top<MAX)

stack[++top]=i; /*堆栈仍有空间,栈顶指示上移一个位置*/
return 0;

else

printf("The stack is full");
return ERR;


int pop() /*取出运算数,出栈操作*/

int var; /*定义待返回的栈顶元素*/
if(top!=NULL) /*堆栈中仍有元素*/

var=stack[top--]; /*堆栈指示下移一个位置*/
return var; /*返回栈顶元素*/

else
printf("The stack is empty!\\n");
return ERR;

void main()

int m,n;
char l;
int a,b,c;
int k;
do
printf("\\tAriothmatic Operate simulator\\n"); /*给出提示信息*/
printf("\\n\\tPlease input first number:"); /*输入第一个运算数*/
scanf("%d",&m);
push(m); /*第一个运算数入栈*/
printf("\\n\\tPlease input second number:"); /*输入第二个运算数*/
scanf("%d",&n);
push(n); /*第二个运算数入栈*/
printf("\\n\\tChoose operator(+/-/*//):");
l=getche(); /*输入运算符*/
switch(l) /*判断运算符,转而执行相应代码*/

case \'+\':
b=pop();
a=pop();
c=a+b;
printf("\\n\\n\\tThe result is %d\\n",c);
printf("\\n");
break;
case \'-\':
b=pop();
a=pop();
c=a-b;
printf("\\n\\n\\tThe result is %d\\n",c);
printf("\\n");
break;
case \'*\':
b=pop();
a=pop();
c=a*b;
printf("\\n\\n\\tThe result is %d\\n",c);
printf("\\n");
break;
case \'/\':
b=pop();
a=pop();
c=a/b;
printf("\\n\\n\\tThe result is %d\\n",c);
printf("\\n");
break;

printf("\\tContinue?(y/n):"); /*提示用户是否结束程序*/
l=getche();
if(l==\'n\')
exit(0);
while(1);
参考技术A void main()

float r1,v1,r2,v2;
printf("复数1\n");
printf("实部:\n");scanf("%f",&r1);
printf("虚部:\n");scanf("%f",&v1);
printf("复数2\n");
printf("实部:\n");scanf("%f",&r2);
printf("虚部:\n");scanf("%f",&v2);
printf("和\n");
printf("%f + %f i\n",r1+r2,v1+v2);
printf("差\n");
printf("%f + %f i\n",r1-r2,v1-v2);
printf("积\n");
printf("%f + %f i\n",r1*r2-v1*v2,v1*r2+r1*v2);
printf("商\n");
printf("%f + %f i\n",(r1*r2+v1*v2)/(r2*r2+v2*v2),(v1*r2-r1*v2)/(r2*r2+v2*v2));
参考技术B struct complex
float rmz; //实部
float lmz;//虚部
;
//产生一个复数.
complex getAComplex(float a,float b)
complex Node=new complex();
Node.rmz=a;
Node.lmz=b;
return Node;
//两个复数求和
complex addComplex(complex complex1,complex complex2)

complex Node=new complex();
Node.rmz=complex1.rmz+complex2.rmz;
Node.lmz=complex1.lmz+complex2.lmz;
return Node;

//求两个复数的差
complex subComplex(complex complex1,complex complex2)

complex Node=new complex();
Node.rmz=complex1.rmz-complex2.rmz;
Node.lmz=complex1.lmz-complex2.lmz;
return Node;

//求两个复数的积
complex productComplex(complex complex1,complex complex2)

complex Node=new complex();
Node.rmz=complex1.rmz*complex2.rmz-complex1.lmz*complex2.lmz;
Node.lmz=complex1.lmz*complex2.rmz+complex2.lmz*complex2.rmz;
return Node;

//求实部
float getComplexRmz(complex complex1)

return complex1.rmz;

//求虚部
float getComplexLmz(complex complex1)

return complex1.lmz;
本回答被提问者和网友采纳

算法训练 P1103

复数运算规则:

乘法法则规则:

规定复数的乘法按照以下的法则进行:

设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i.

其实就是把两个复数相乘,类似两个多项式相乘,展开得:ac+adi+bci+bdi^2,因为i^2=-1,所以结果是(ac-bd)+(bc+ad)i。两个复数的积仍然是一个复数。

除法运算规则:

①设复数a+bi(a,b∈R),除以c+di(c,d∈R),其商为x+yi(x,y∈R),

即(a+bi)÷(c+di)=x+yi

∵(x+yi)(c+di)=(cx-dy)+(dx+cy)i.

∴(cx-dy)+(dx+cy)i=a+bi.

由复数相等定义可知cx-dy=adx+cy=b

解这个方程组,得x=(ac+bd)/(c^2+d^2)y=(bc-ad)/(c^2+d^2)

 

                                                             ----摘自百科

 

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int main()
 5 {
 6     char ch;
 7     double a,b,c,d;
 8     scanf("%c%lf%lf%lf%lf",&ch,&a,&b,&c,&d);
 9     if(ch==+)
10         printf("%.2lf+%.2lfi",a+c,b+d);
11     if(ch==-)
12         printf("%.2lf+%.2lfi",a-c,b-d);
13     if(ch==*)
14         printf("%.2lf+%.2lfi",a*c-b*d,a*d+b*c);
15     if(ch==/)
16         printf("%.2lf+%.2lfi",(a*c+b*d)/(c*c+d*d),(b*c-a*d)/(c*c+d*d));
17     return 0;
18 }
View Code

 

以上是关于c语言复数四则运算的主要内容,如果未能解决你的问题,请参考以下文章

复数的运算法则

如何运用复数的代数表示式进行四则运算

抽象数据类型(复数四则运算实现)

高一数学复数的四则运算知识点分析

复数的四则运算

复数计算器:c 中结构变量的算术运算