您的位置:

c语言如何复数,c语言 复数

本文目录一览:

用c语言如何输出复数

这不是c语言的问题。

数学上复数的表示方法是 a + bi,按这个形式输出就可以了,比如:

1+9i

-3.45-8.33i

输出方法这样就行:

print("%f+%fi", a, b);

C语言中怎么进行复数的定义及运算

定义成结构体 实部和虚部分别定义成double,然后在自己定义运算……

如果是C++的话,可以重载+、-、*、\操作符的方式

c语言中如何定义一个复数型数组?

首先加入头文件:

#include

complex

然后进行复数类型定义:

typedef

complexfloat

Comp;//这里double也可

这样就可以使用复数结构了

如:声明复数数组

Comp

a[5];

数据结构c语言复数运算

1、首先打开vc6.0, 新建一个项目。

2、添加stdio.h头文件。

3、添加math.h头文件。

4、添加main主函数。

5、定义结构体z。

6、定义double类型val变量。

7、初始化z。

8、使用cabs函数。

9、使用printf打印信息。

10、运行程序,看看结果。

在C语言环境下实现复数运算

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

#include

stdio.h

#includestring.h

int

ope(char

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

{

int

count=0;

for(int

i=0;num[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=1;il;i++)//将整数部分的值存放到整数a中

if('+'==num[i]

||

'-'==num[i])

{

for(j=1;ji;j++)

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

break;

}

}

else

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

{

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

if('+'==num[i]

||

'-'==num[i])

{

for(j=1;ji;j++)

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

break;

}

}

}

else

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

{

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

if('+'==num[i]

||

'-'==num[i])

{

for(j=0;ji;j++)

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

break;

}

}

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

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

for(j=i+1;jl-1;j++)

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

else

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

for(j=i+1;jl-1;j++)

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

}

else//没有符号

for(i=0;il-1;i++)

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

}

else//没有虚部

{

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

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

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

else

{

i=0;

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

i++;

for(;il;i++)

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(b0)

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=a;d=b;

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

scanf("%d",n);

for(i=1;in;i++)

{

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;

}