懂C语言的进来看下

/*Note:YourchoiceisCIDE*/#include"stdio.h"/*求一元二次方程ax^2+bx+c=0的根*/voidmain(){intiFirn... /* 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);
}
}

我自学写的,能运行,但是输出的答案不对,哪里错了??
展开
 我来答
xiajiaxin
2009-09-30 · TA获得超过773个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:262万
展开全部
#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);
}
}
匿名用户
2009-09-30
展开全部
1 iSecnum/(2*iFirnum);当iFirnum为0使,后果很严重
2 iSecnum/(2*iFirnum);是整除的意思 应该将所有的变量都定义为double 而不是int 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式