当前位置:首页 » 编程语言 » 用c语言实现两个复数相加的算法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言实现两个复数相加的算法

发布时间: 2022-04-23 15:16:00

① 求两个复数相加的算法

#include<stdio.h>
#include<math.h>
main()
{
float r,r1,r2,i,i1,i2;
printf("input the real part :");
scanf("%f",&r1);
printf("\n");
printf("input the imagine part :"); //第一个复数
scanf("%f",&i1);
printf("\n");

printf("input the real part :");
scanf("%f",&r2);
printf("\n");
printf("input the imagine part :");//第二个复数
scanf("%f",&i2);
printf("\n");
r=r1+r2;
i=i1+i2;
printf("the sum is :");
printf("%f+i%f",r,i);

}

② 用c语言 如何编写两个复数的运算啊 都含有虚部 谢谢啊

定义一个struct作为复数,然后分别定义加减剩除运算。可以增加一个函数printcomplex来在主函数中以数学的形式输出复数。
typedef struct complex
{
double real; //实部
double image; //虚部
} COMPLEX;

COMPLEX add(COMPLEX a,COMPLEX b) //加法
{
COMPLEX sum;
sum.real = a.real+b.real;
sum.image = a.image+b.image;
return sum;
}

COMPLEX sub(COMPLEX a,COMPLEX b) //减法
{
COMPLEX diff;
diff.real = a.real-b.real;
diff.image = a.image-b.image;
return diff;
}

COMPLEX mul(COMPLEX a,COMPLEX b) //乘法
{
COMPLEX acc;
acc.real = a.real*b.real-a.image*b.image;
acc.image = a.real*b.image+a.image*b.real;
return acc;
}

COMPLEX divi(COMPLEX a,COMPLEX b) //除法
//除法去分母可以转换为乘法
{
COMPLEX quo;
double den = b.real*b.real+b.image*b.image; //分母
/* 先判断除数是否为0,因为均为double型,所以不能 直接与0作比较,而要用绝对值是否小于某个极小值e(读伊夫西龙???)来判断是否为0,这里取e=10e-10 */
if ((abs(b.real)<10e-10) && (abs(b.image)<10e-10))
{
printf("Divivd by Zero");
exit(0); //强制退出程序
}

quo.real = a.real*b.real+a.image*b.image;
quo.real /= den;
quo.image = a.image*b.real+a.real*b.image;
quo.image /= den;
return quo;
}

void printcom(COMPLEX a) //输出复数a
{
printf("%lf+%lfi",a.real,a.image);
}

③ C语言 求两个复数的和

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
proctcomplex(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;
}

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

乱七八糟写了一个,肯定有很多不对的地方,懒得找了,如果你找到了发QQ(252290278)给我吧
#include
<stdio.h>
#include<string.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;i<l;i++)//将整数部分的值存放到整数a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=1;j<i;j++)
a=a*10+num[j]-'0';
break;
}
}
else
if('-'==num[0])//如果实部是负数
{
for(i=1;i<l;i++)//将整数部分的值存放到整数a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=1;j<i;j++)
a=a*10-(num[j]-'0');
break;
}
}
}
else
if(1==ope(num))//一个符号,即实部为正数或者没有实部
{
for(i=0;i<l;i++)//将整数部分的值存放到整数a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=0;j<i;j++)
a=a*10+(num[j]-'0');
break;
}
}
//将虚数部分的值存放到整数b中
if('+'==num[i])//如果虚部是正数
for(j=i+1;j<l-1;j++)
b=b*10+num[j]-'0';
else
if('-'==num[i])
for(j=i+1;j<l-1;j++)
b=b*10-(num[j]-'0');
}
else//没有符号
for(i=0;i<l-1;i++)
b=b*10+num[j]-'0';
}
else//没有虚部
{
if('-'==num[0])//实部是负数
for(i=1;i<l;i++)//将整数部分的值存放到整数a中
a=a*10-(num[i]-'0');
else
{
i=0;
if('+'==num[0])//实部是正数
i++;
for(;i<l;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(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=a;d=b;
printf("请出入n次幂(只能为整数!):\n");
scanf("%d",&n);
for(i=1;i<n;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;
}

⑤ c语言复数相加问题。自己写的代码有错,题目已给。

#include<stdio.h>
struct re{
int a;
int b;
};
re Jia(re re1,re re2){
re re3;
re3.a=re1.a+re2.a;
re3.b=re1.b+re2.b;
return re3;
}
int main()
{
re f1,f2,f3;
while(scanf("%d %d %d %d",&f1.a,&f1.b,&f2.a,&f2.b)!=-1)
{
f3=Jia(f1,f2);
printf("%d+%di",f3.a,f3.b);
}
getchar();
return 0;
}

⑥ C语言 复数表示与求和

#include<stdlib.h>
#include<stdio.h>
typedef
struct
{
double
a,
b;
}
fushu;
fushu
add(fushu
a,
fushu
b)
/*计算a+b,返回一个复数*/
{
fushu
c;
c.a
=
a.a
+
b.a;
c.b
=
a.b
+
b.b;
return
c;
}
int
main()
{fushu
x,y;
printf("输入复数实部:");
scanf("%lf",&x.a);
printf("输入复数虚部:");
scanf("%lf",&x.b);
printf("你输入的复数为:%lf
+
%lf
i\n",x.a,x.b);
printf("输入另一个复数的实部:");
scanf("%lf",&y.a);
printf("输入另一个复数的虚部:");
scanf("%lf",&y.b);
printf("两个复数的和为:%lf
+
%lf
i",add(x,y).a,add(x,y).b);
}

⑦ 用c语言编写程序:输入两个复数,计算并输出它们的和及乘积

输入两个复数,计算并输出它们的和及乘积c语言编写:

#include<stdio.h>

#include<math.h>

void main()

{ int i1,i2,j1,j2;

int sum(int i1,int i2,int j1,int j2);

int mul(int i1,int i2,int j1,int j2);

printf("请输入第一个复数的实部和虚部:");

scanf("%d %d",&i1,&i2);

printf("请输入第二个复数的实部和虚部:");

scanf("%d %d",&j1,&j2);

sum(i1,i2,j1,j2);

mul(i1,i2,j1,j2);

}

int sum(int i1,int i2,int j1,int j2)

{

int i,j;

i=i1+j1;

j=i2+j2;

printf("两复数的和为:%d+%di ",i,j);

return 0;

}

int mul(int i1,int i2,int j1,int j2)

{

int i,j;

i=i1*j1-i2*j2;

j=i2*j1+i1*j2;

printf("两复数的积为:%d+%di ",i,j);

return 0;

}

⑧ 试验内容: 1. 编写求两个复数相加的C语言程序(数值都从键盘上输入)。 分析:(注意,i只是一种输出的表示

简单,汗,我只给你写主函数体。
(1) typedef struct complex *Complex;
struct complex{float re;float im;};
int main(void)
{
Complex a,b;
scanf("%f %f %f %f",a->re,a->im,b->re,b->im);
printf("%f+%fi",(a->re+b->re),(a->im+b->im));
}
(2)int main(viod)
{
char a;
scanf("%c",&a);
if(a>='a'&&a<='z')
{
a-=32;
}
else if(a>='A'&&a<='Z')
{
a+=32;
}
else
{
a='0';
}
printf("%c",a);
}
(3)不明白你想说什么,好像为了前进一步就绕地球后退一圈加一步。这样写总明白了
void swap(int *a;int *b)
{
int temp;

temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a=3; int b=6;int c=9;
swap(&a,&b);
swap(&b,&c);
}

⑨ C语言怎么实现复数运算

这个是一个列子,可以参考下
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 proctComplex(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;
}

⑩ 写一个c语言程序(输入两个复数(格式如2+3i),输出两个复数相加的结果。)

#include<stdio.h>

int main()
{
int x1,y1, x2, y2;

printf("Please input complex 1:");
scanf("%d+%di", &x1, &y1);
printf("Please input complex 2:");
scanf("%d+%di", &x2, &y2);
printf("The sum is=%d+%di\n", x1+x2, y1+y2);
return 0;
}

以上程序是最简单的形式,输入时要注意只能x+yi这样输入,各个字符间不能有空格