定義一個struct作為復數,然后分別定義加減剩除運算。可以增加一個函數printcomplex來在主函數中以數學的形式輸出復數。
typedefstructcomplex
{
doublereal;//實部
doubleimage;//虛部
}COMPLEX;
COMPLEXadd(COMPLEXa,COMPLEXb)//加法
{
COMPLEXsum;
sum.real=a.real+b.real;
sum.image=a.image+b.image;
returnsum;
}
COMPLEXsub(COMPLEXa,COMPLEXb)//減法
{
COMPLEXdiff;
diff.real=a.real-b.real;
diff.image=a.image-b.image;
returndiff;
}
COMPLEXmul(COMPLEXa,COMPLEXb)//乘法
{
COMPLEXacc;
acc.real=a.real*b.real-a.image*b.image;
acc.image=a.real*b.image+a.image*b.real;
returnacc;
}
COMPLEXdivi(COMPLEXa,COMPLEXb)//除法
//除法去分母可以轉換為乘法
{
COMPLEXquo;
doubleden=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("DivivdbyZero");
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;
returnquo;
}
voidprintcom(COMPLEXa)//輸出復數a
{
printf("%lf+%lfi",a.real,a.image);
}