c语言求解,求解二元一次方程?

#include<stdio.h>#include<math.h>voidmain(){doublex1,x2,a,b,c,deta;printf("按降次的顺序输入系数... #include<stdio.h>
#include<math.h>
void main()
{
double x1,x2,a,b,c,deta;
printf("按降次的顺序输入系数a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
printf("要求解方程为:\n%fx^2+%fx+%f=0\n",a,b,c);
deta=b*b-4*a*c;
if(deta>0)
{
x1=(-b+sqrt(deta))/(2*a);
x2=(-b-sqrt(deta))/(2*a);
printf("该方程有两个不等的实数根\nx1=%f\nx2=%f\n",x1,x2);
}
else if(deta==0)
{
x1=x2=-b/(2*a);
printf("该方程有两个相等的实数根\nx1=x2=%f\n",x1);
}
else
printf("该方程没有实数根,有两个虚根分别为:\nx1=%f+%fi\nx2=%f-%fi\n",(float)(-b/(2*a)),(float)((sqrt(-deta))/(2*a)),(float)(-b/(2*a)),(float)((sqrt(-deta))/(2*a)));

}
这样子的话根本求不到解的,但是把类型改为下面的话就可以求出结果:
#include<stdio.h>
#include<math.h>
void main()
{
double x1,x2;
float a,b,c,deta;
printf("按降次的顺序输入系数a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
printf("要求解方程为:\n%fx^2+%fx+%f=0\n",a,b,c);
deta=b*b-4*a*c;
if(deta>0)
{
x1=(-b+sqrt(deta))/(2*a);
x2=(-b-sqrt(deta))/(2*a);
printf("该方程有两个不等的实数根\nx1=%f\nx2=%f\n",x1,x2);
}
else if(deta==0)
{
x1=x2=-b/(2*a);
printf("该方程有两个相等的实数根\nx1=x2=%f\n",x1);
}
else
printf("该方程没有实数根,有两个虚根分别为:\nx1=%f+%fi\nx2=%f-%fi\n",(float)(-b/(2*a)),(float)((sqrt(-deta))/(2*a)),(float)(-b/(2*a)),(float)((sqrt(-deta))/(2*a)));

}
求解,这个double型的为何一定要改为float型,是什么原因呢
展开
 我来答
我是20120101
2013-04-05
知道答主
回答量:37
采纳率:0%
帮助的人:15万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c;
float x1,x2;
float x3,x4;
float k1,k2,k3;
printf("please input:a,b,c");
scanf("%f%f%f",&a,&b,&c);
k1=b*b;
k2=4*a*c;
k3=sqrt(b*b-4*a*c);
if(fabs(a)<=1e-6)
{
printf("the input is error\n");
return;
}
if(k1>k2)
{
x1=(-b+k3)/(2*a);
x2=(-b-k3)/(2*a);
printf("x1=%.2f,x2=%.2f",x1,x2);
}
else if(k1==k2)
{
x1=x2=(-b+k3)/(2*a);
printf("x1=x2=%.2f",x1);
}
else
{
x3=-b/(2*a);
x4=sqrt(4*a*c-b*b)/(2*a);
printf("x1=%.2f+%.2f i\n",x3,x4);
printf("x2=%.2f-%.2f i\n",x3,x4);
}
给点赞助!}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
towardsworthy
2011-10-27 · TA获得超过5万个赞
知道大有可为答主
回答量:7121
采纳率:66%
帮助的人:3668万
展开全部
scanf("%f%f%f",&a,&b,&c);
因为你这里是要输入三个float型的数据,所以a b c的数据类型要是float的 呵呵

这样的话:
scanf("%lf%lf%lf",&a,&b,&c);
a b c就可以定义为double类型的数据啦~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AngelisI
2011-10-27 · TA获得超过3.1万个赞
知道大有可为答主
回答量:6588
采纳率:83%
帮助的人:3277万
展开全部
因为scanf("%f%f%f",&a,&b,&c);
scanf 时,格式定义和类型必须一致
这里输入是float,如果用double的abc会出问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5cad33e04
2011-10-27 · 超过11用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:21万
展开全部
上面两个都是高手啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
捌零Music
2011-10-27
知道答主
回答量:6
采纳率:0%
帮助的人:6821
展开全部
数据定义错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式