我编写了一个程序来计算方程的根,但它没有简化根。任何人都可以帮助我简化它们
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void)
{
int a,b,c;
float d,d2;
printf(" Enter a,b and c:");
scanf("%d %d %d",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
{
printf("(%d+i%d)/%d\n",-b,sqrt(-d),2*a) ;
printf("(%d-i%d)/%d\n",-b,sqrt(-d),2*a);
}
else
{
printf("(%d+%d)/%d\n",-b,sqrt(d),2*a);
printf("(%d-%d)/%d\n",-b,sqrt(d),2*a);
}
getch();
}
最佳答案
您无法计算负数的平方根。 d
是负数,并且您正在尝试找到它的平方根。复数解的整点和虚数单位i
就是写-1
如i^2
,然后当 d < 0
你有:
sqrt(d) = sqrt(i^2 * (-d)) = i*sqrt(-d)
所以改成这样:
if(d<0)
{
printf("(%d+i%lf)/%d",-b,sqrt(-d),2*a);
printf("(%d-i%lf)/%d",-b,sqrt(-d),2*a);
}
我不知道为什么你的 printf
两边有括号争论,我删除了那些。
第二个%d
也应更改为 %lf
自 sqrt
返回一个 double 值。
关于c - 简化复杂的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211666/