懂C语言的帮忙看下哪里写错了

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:04:37
/* Note:Your choice is C IDE */
#include "stdio.h"
/*求一元二次方程ax^2+bx+c=0的根*/
void main()
{
int iFirnum,iSecnum,iThinum,e,x1,x2,r,i;
printf("请输入二次项系数a:");
scanf("%d",&iFirnum);
printf("请输入一次项系数b:");
scanf("%d",&iSecnum);
printf("请输入常熟项c:");
scanf("%d",&iThinum);
e=iSecnum*iSecnum-4*iFirnum*iThinum;
if(e>=0)
{
x1=(-iSecnum+sqrt(e))/(2*iFirnum);
x2=(-iSecnum-sqrt(e))/(2*iFirnum);
printf("x1=%8.4f,x2=%8.4f\n",x1,x2);
}
else
{
r=-iSecnum/(2*iFirnum);
i=sqrt(-e)/(2*iFirnum);
printf("x1=%8.4f+%8.4fi\n",r,i);
printf("x2=%8.4f-%8.4fi\n",r,i);
}
}
我自学写的,能运行,但是输出的答案不对,,麻烦看下哪里错了

#include<stdio.h>
#include<math.h>//加这个头文件,否则不能用sqrt

/*求一元二次方程ax^2+bx+c=0的根*/
void main()
{
int iFirnum,iSecnum,iThinum;
float e,x1,x2,r,i;//这里不能声明为int
printf("请输入二次项系数a:");
scanf("%d",&iFirnum);
printf("请输入一次项系数b:");
scanf("%d",&iSecnum);
printf("请输入常熟项c:");
scanf("%d",&iThinum);
e=iSecnum*iSecnum-4*iFirnum*iThinum;
if(e>=0)
{
x1=(-iSecnum+sqrt(e))/(2*iFirnum);
x2=(-iSecnum-sqrt(e))/(2*iFirnum);
printf("x1=%8.4f,x2=%8.4f\n",x1,x2);
}
else
{
r=(float)-iSecnum/(2*iFirnum);//这里需要强制转换,建议你开始就全都声明为float
i=sqrt(-e)/(2*iFirnum);
printf("x1=%8.4f+%8.4fi\n",r,i);
printf("x2=%8.4f-%8.4fi\n",r,i);
}
}