我制作了一个程序来计算quauation的根源,但它并没有简化root。任何人都可以帮我简化它们
#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();
}
答案 0 :(得分:4)
您无法计算负数的平方根。 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
论点附近有了parantheses,我删除了那些。
第二个%d
也应该更改为%lf
,因为sqrt
会返回一个双倍。
答案 1 :(得分:1)
如果你想计算负数的平方根,找一个C99编译器(基本上,MSVC除了之外的任何东西),包括<complex.h>
标题,使用complex
数据类型和csqrt
功能