用c语言编辑复数的加减乘除吗

Python010

用c语言编辑复数的加减乘除吗,第1张

1、设计一个可进行复数运算的演示程序。要求实现下列六种基本运算

1)由输入的实部和虚部生成一个复数

2)两个复数求和

3)两个复数求差

4)两个复数求积,

5)从已知复数中分离出实部

6)从已知复数中分离出虚部。

运算结果以相应的复数或实数的表示形式显示(最好用结构体的方法)

要是能用c++和stl,可以这样写#include

<complex>#include <iostream>void main(){ using namespace

stdcomplex<double>a(3, 2)complex<double>b(5, 6)

complex<double>result(0,0)result = a*b/(a+b)cout <<

result}

乱七八糟写了一个,肯定有很多不对的地方,懒得找了,如果你找到了发QQ(252290278)给我吧

#include

<stdio.h>

#include<string.h>

int

ope(char

num[])//计算有几个符号

{

int

count=0

for(int

i=0num[i]!='\0'i++)

if('+'==num[i]

||

'-'==num[i])

count++

return

count

}

void

inone(double

&a,double

&b)//输入一个复数

{

int

i,j,l

char

num[100]

scanf("%s",num)

l=strlen(num)

if('i'==num[l-1])//有虚部

{

if(ope(num))//如果有符号

{

i=0

if(2==ope(num))//有两个符号

{

if('+'==num[0])//如果实部是正数

{

for(i=1i<li++)//将整数部分的值存放到整数a中

if('+'==num[i]

||

'-'==num[i])

{

for(j=1j<ij++)

a=a*10+num[j]-'0'

break

}

}

else

if('-'==num[0])//如果实部是负数

{

for(i=1i<li++)//将整数部分的值存放到整数a中

if('+'==num[i]

||

'-'==num[i])

{

for(j=1j<ij++)

a=a*10-(num[j]-'0')

break

}

}

}

else

if(1==ope(num))//一个符号,即实部为正数或者没有实部

{

for(i=0i<li++)//将整数部分的值存放到整数a中

if('+'==num[i]

||

'-'==num[i])

{

for(j=0j<ij++)

a=a*10+(num[j]-'0')

break

}

}

//将虚数部分的值存放到整数b中

if('+'==num[i])//如果虚部是正数

for(j=i+1j<l-1j++)

b=b*10+num[j]-'0'

else

if('-'==num[i])

for(j=i+1j<l-1j++)

b=b*10-(num[j]-'0')

}

else//没有符号

for(i=0i<l-1i++)

b=b*10+num[j]-'0'

}

else//没有虚部

{

if('-'==num[0])//实部是负数

for(i=1i<li++)//将整数部分的值存放到整数a中

a=a*10-(num[i]-'0')

else

{

i=0

if('+'==num[0])//实部是正数

i++

for(i<li++)

a=a*10+num[i]-'0'

}

}

}

void

intwo(double

&a,double

&b,double

&c,double

&d)//输入两个复数

{

a=b=c=d=0

printf("请输入第一个复数:\n")

inone(a,b)

printf("请输入第二个复数:\n")

inone(c,d)

}

void

pri(double

a,double

b)//输出

{

if(0==a

&&

0==b)

{

printf("0\n")

return

}

if(a)

printf("%d",a)

if(b)

{

if(b>0)

printf("+")

printf("%di",b)

}

printf("\n")

}

void

add()//加

{

double

a,b,c,d

intwo(a,b,c,d)

printf("这两个复数相加的结果为:")

pri(a+c,b+d)

}

void

sub()//减

{

double

a,b,c,d

intwo(a,b,c,d)

printf("这两个复数相减的结果为:")

pri(a-c,b-d)

}

void

mul()//乘

{

double

a,b,c,d

intwo(a,b,c,d)

printf("这两个复数相乘的结果为:")

pri(a*c-b*d,b*c+a*d)

}

void

exc()//除

{

double

a,b,c,d

intwo(a,b,c,d)

if(c==0

&&

d==0)

{

printf("错误,除数为零!\n")

return

}

printf("这两个复数相除的结果为:")

pri((a*c+b*d)/(c*c+d*d),(b*c-a*d)/c*c+d*d)

}

void

vei()//幂

{

int

n

double

a,b,c,d

intwo(a,b)

c=ad=b

printf("请出入n次幂(只能为整数!):\n")

scanf("%d",&n)

for(i=1i<ni++)

{

a=a*c-b*d

b=b*c+a*d

}

printf("这个复数相减的结果为:")

pri(a,b)

}

int

main()

{

int

n

char

ch

while(1)

{

printf("请选择需要的运算:\n")

printf("0.退出\n")

printf("1.加运算\n")

printf("2.减运算\n")

printf("3.乘运算\n")

printf("4.除运算\n")

printf("5.幂运算\n")

scanf("%c",&ch)

while('

'==ch

||

'\n'==ch)

scanf("%c",&ch)

if(ch<'0'

||

ch>'9')

{

printf("输入错误请重新输入!\n")

continue

}

n=ch-'0'

switch(n)

{

case

0:

return

0

case

1:

add()

break

case

2:

sub()

break

case

3:

mul()

break

case

4:

exc()

break

case

5:

vei()

break

default:

printf("输入错误,请重新输入\n")

break

}

}

return

0

}