❶ 用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;
}
❷ 數據結構c語言復數運算
1、首先打開vc6.0, 新建一個項目。
❸ 對於C語言中用求根公式求出復數怎麼寫
#include <stdio.h>
#include <math.h>
int main()
{ double a,b,c,d;
scanf("%lf%lf%lf",&a,&b,&c);
printf("%g %g %g ",a,b,c);
d=b*b-4*a*c;
if(d>0)
printf("x1=%g x2=%g ",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(d==0)
printf("x1=x2=%g ",-b/(2*a));
else
printf("x1=%g+%gi x2=%g-%gi ",-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a));
return 0;
}
❹ 怎樣用C語言輸入或者輸出一個復數詳細講解一下喲.
C語言本身沒有復數這個數據類型,但是你可以自己定義:
typedef struct
{
double real; /* 實部 */
double imag; /* 虛部 */
}ComplexNumber;
然後你可以使用ComplexNumber來定義變數,然後用scanf("%f,%f", &cn.real, &cn.imag);這樣的語句來輸入復數,還可以進行其它任意操作。
❺ 在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語言怎麼實現復數運算
這個是一個列子,可以參考下
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;
}