c復數的演算法
『壹』 用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語言 復數表示與求和
在數學中一個復數可以定義為 (z=a + bi) 的形式。 C 語言在 ISO C99 時就引入了復數類型。它是通過 complex.h 中定義的。 我們可以使用 complex , __complex__ , 或 _ComplexI 類型符號來表示。
在C語言中有三種復數類型,分別為 float complex , double complex , long double complex 。他們之間 的區別就是表示復數中實部和虛步的數的數據類型不同。 complex 其實就是一個數組,數組中有兩個元素,一個表示復數的實部,一個表示復數的虛部。
源代碼如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double sum(double* x);
void main()
{
double *a,s=0.0;
a=(double*)malloc(sizeof(double));
*a=5;
s=sum(a);
printf("求和的結果是: %lf ",s);
}double sum(double* x)
{
int j=0;
double s=0.0;
for(j=0;j<=3;j++)
{
s=s+pow(*x,j);
}
s=s*2;
return s;
}
(2)c復數的演算法擴展閱讀
輸入任意兩個復數差與商的源代碼如下
typedefstruct{
floatr;
floatim;
Complex;
Complexres;
Complex*add(Complex*a,Complex*b){
res.r=a->r+b->r;
res.im=a->im+b->im;
return&res;
}
Complex*div(Complex*a,Complex*b){
floatd=(b->r*b->r+b->im*b->im);
res.r=(a->r*b->r+a->im*b->im)/d;
res.im=(a->im*b->r-a->r*b->im)/d;
return&res;
『叄』 C語言用頭文件實現復數加減法
1、_Complex是一種新增的數據類型,用來表示復數。C99 新增了復數類型(_Complex)和虛數類型(_Imaginary)。簡單來說,C99 提供了三種復數類型:float _Complex,double _Complex,和 long double _Complex。對於 float _Complex類型的變數來說,它包含兩個 float類型的值,一個用於表示復數的實部(real part),另一個用於表示虛部(imaginary part)。類似地,double _Complex 包含兩個 double類型的值。C99 也提供了三種虛數類型:float _Imaginary,double _Imaginary,以及 long double _Imaginary。虛數類型只有虛部,沒有實部。
2、包含標准頭文件 complex.h 後,就可以用 complex來代表 _Complex,用imaginary來代表 _Imaginary,以及用 I來代表虛數單位 i,也就是 -1的平方根。例如:
#include <complex.h>
double _Complex x = 5.2;
double complex y = 5.0 * I;
double complex z = 5.2 – 5.0 * I;
3、注意:_Complex類型對於獨立式環境(freestanding environment)來說是可選的。可選的意思是,不強制必須支持這種類型。而所謂獨立式環境,是指 C 程序可以在沒有操作系統的情況下運行。_Imaginary類型在任何環境下都是可選的。目前的編譯器對這兩種類型的支持都不太好。
『肆』 C語言 *有關復數的四則演算法*程 (在線等答案!速度,只求答案正確不追求先答與否)
#include <stdio.h>
typedef struct {
double a;
double b;
} COMPLEX;
COMPLEX add (COMPLEX a, COMPLEX b) {
a.a += b.a;
a.b += b.b;
return a;
}
COMPLEX subtract (COMPLEX a, COMPLEX b) {
a.a -= b.a;
a.b -= b.b;
return a;
}
COMPLEX multiply (COMPLEX a, COMPLEX b) {
COMPLEX c;
c.a = a.a*b.a - a.b*b.b;
c.b = a.a*b.b + a.b*b.a;
return c;
}
COMPLEX divide (COMPLEX a, COMPLEX b) {
COMPLEX c;
double divisor = b.a*b.a + b.b*b.b;
if (divisor - 0 == 0)
exit (0);
c.a = (a.a*b.a + a.b*b.b) / divisor;
c.b = (a.b*b.a - a.a*b.b) / divisor;
return c;
}