用vs2010编写c语言程序时运行程序时,若输入一个0,5,1,判断结果是对的,但计算的结果却是0.00,为什么?

源程序为#include<math.h>#include<stdio.h>#include<stdlib.h>intmain(void){inta;intb;intc;d... 源程序为
#include <math.h>#include <stdio.h>#include < stdlib.h>int main(void){ int a; int b; int c; double x1; double x2; double s; printf ("请输入一元二次函数a*x*x+b*x+c=0的三个正整系数a,b,c:\n"); scanf_s ("%d%d%d",&a,&b,&c); s = b*b - 4*a*c; if (a==0) { if (b==0) printf ("该方程不成立,无解\n"); else { x1=(-c) / b; x2=x1; printf ("该方程不是一元二次方程,而是一元一次方程,该方程的解为:x1=x2=%5.2f\n",x1); } } else { if( s > 0 ) { x1 = (-b + sqrt(s)) / (2*a); x2 = (-b - sqrt(s)) / (2*a); printf ("该一元二次方程有两解:x1=%5.2f,x2=%5.2f\n",x1,x2); } else { if ( s < 0 ) { s=-s; x1= -b /(2*a); x2=fabs(sqrt(s)/(2*a)); printf ("该一元二次方程无实数解,且该方程为两个不相等的共轭负根:x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",x1,x2,x1,x2 ); } else { x1 = -b / (2*a); x2 = x1; printf ("该一元二次方程有唯一相同的解:x1=x2=%5.2f\n",x1); } } } system("pause"); return 0;}
展开
 我来答
百度网友c70d8e3
2015-07-22 · TA获得超过380个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:280万
展开全部
在计算机中,1 / 2 = 0
所以在所有整数乘除之前,先把int转换成float或double,
或者直接把a,b,c试成float也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2015-07-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6450万
展开全部
x1=(-c) / b; 改成
x1=(-c)*1.0 / b; 全是整数相除 结果不带小数!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式