求二元一次方程,分三種情況,代碼已撰寫完成,但輸入結果進行運行,有的正確,有的錯誤,不知道哪里出問題了,還請各位大神賜教教?
uj5u.com熱心網友回復:
修改如下,供參考:#include <stdio.h>
#include <math.h>
void Calculate(double a, double b, double c)
{
double esp=pow(10,-6);//防止輸出 -0.0000
if(a==0) return;
double m = b * b - 4 * a * c;
if (m == 0)
{
printf("該方程只有一個根:x=%.4f\n",(-b)/(a * 2)+esp);
}
if (m > 0)
{
printf("該方程有兩個不同的實根\n");
double m0 = (-b + sqrt(m)) / (2 * a)+esp;
double n0 = (-b - sqrt(m)) / (2 * a)+esp;
printf("x1=%.4f x2=%.4f\n",m0,n0);
}
if (m < 0)
{
printf("該方程有兩個不同的復數根\n");
if (b != 0)
{
double m1 = -b / (2 * a)+esp;
double m2 = sqrt(-m) / (2 * a)+esp;
double n1 = -b / (2 * a)+esp;
double n2 = - sqrt(-m) / (2 * a)+esp;
printf("x1=%.4f%c%.4fi x2=%.4f%c%.4fi\n",m1,(m2 > 0 ? '+' : '-'),fabs(m2),
n1,(n2 > 0 ? '+' : '-'),fabs(n2));
}
else
{
double m3 = sqrt(-m) / (2 * a)+esp;
double n3 = -sqrt(-m)/ (2 * a)+esp;
printf("x1=%.4fi x2=%.4fi\n",m3,n3);
}
}
}
int main()
{
double a, b, c;
scanf("%lf%lf%lf",&a,&b,&c);
Calculate(a, b, c);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284138.html
標籤:C語言
