c語言復數運算
*/
#include<stdio.h>
#include<stdlib.h>
typedef?struct
{
double?r,i; //r為實部,i為虛部?
}complex;
complex*?add(complex?*a,complex?*b);?//復數a?+?復數b?
complex*?minus(complex?*a,complex?*b); ?//復數a?-?復數b?
complex*?multiply(complex?*a,complex?*b);?//復數a?*?復數b?
void?printComplex(complex?*a);?//輸出?
complex*?add(complex?*a,complex?*b)?{
complex?*add;
add->r?=a->r+b->r;
add->i?=a->i+b->i;
return?add;
}
complex*?minus(complex?*a,complex?*b)?
{
complex?*minus;
minus->r?=a->r-b->r;
minus->i?=a->i-b->i;
return?minus;
}
complex*?multiply(complex?*a,complex?*b)?
{
complex?*multiply;
multiply->r?=?a->r*b->r-a->i*b->i;
multiply->i?=?a->i*b->r+a->r*b->i;
return?multiply;
}
void?printComplex(complex?*a)?//輸出要註意虛部有負數的情況
{
if(a->r!=0) ?
printf("%.2lf",a->r); //不要斷行,先輸出實部
else
printf("0.00");
if(a->i>0) //大於0,正常輸出+虛部
printf("?+?%.2lfi\n",a->i);
else?if(a->i<0) ?//虛部是負數,不用輸出+號了,直接輸出負數
printf("?%.2lfi\n",a->i);
else
printf("?+?0.00i\n");//虛部為0
}
幫妳改了下,再去試試吧。壹時之間我也想不出還有什麽漏洞了。祝好運。如果是自己寫主函數的話,改壹改那個輸入吧,輸入很容易會造成問題的
這壹句: scanf("...%f ?%c ",...,c),壹個不好輸入就會出錯,c可能會獲取到空白。