菜鸟关于C语言printf后面的问题!

m=-b/(2*a);n=sqrt(4*a*c-b*b)/(2*a);l=-b/(2*a);h=sqrt(4*a*c-b*b)/(2*a);printf("x1=%f+%... m=-b/(2*a);n=sqrt(4*a*c-b*b)/(2*a);l=-b/(2*a);h=sqrt(4*a*c-b*b)/(2*a);
printf("x1=%f+%fi\nx2=%f-%fi\n",m,n,l,h)

printf("x1=%f+%fi\nx2=%f-%fi\n",-b/(2*a),sqrt(4*a*c-b*b)/(2*a),-b/(2*a),sqrt(4*a*c-b*b)/(2*a));

为什么我直接把m的表达式写在printf后面的m处,不要m这个中间变量,算出的值是错的啊?
就是不要m,n,l,h这几个中间变量。貌似可以不要m,n,l,h吧,但为什么错了呢,请高手解答

#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{
int a,b,c;
double x,x1,x2,m,n,l,h;
scanf("%d%d%d",&a,&b,&c);
if (a==0)
if (a==0&&b==0) printf("Input error!\n");
else {x=-c/b;printf("x=%f\n",x);}
else {
if (b*b-4*a*c>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c==0) printf("x1=x2=%f\n",x1);
else printf("x1=%f\nx2=%f\n",x1,x2);
}
else {m=-b/(2*a);n=sqrt(4*a*c-b*b)/(2*a);l=-b/(2*a);h=sqrt(4*a*c-b*b)/(2*a);
if(b==0) printf("x1=%fi\nx2=-%fi\n",n,h);
else printf("x1=%f+%fi\nx2=%f-%fi\n",m,n,l,h);
}
}
getch();
}
这个原程序,就是求一元二次方程的解得问题。
展开
 我来答
百度网友f0df9d6f6
推荐于2016-10-08
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
把printf("x1=%f+%fi\nx2=%f-%fi\n",-b/(2*a),sqrt(4*a*c-b*b)/(2*a),-b/(2*a),sqrt(4*a*c-b*b)/(2*a));
改为
printf("x1=%f+%fi\nx2=%f-%fi\n",(double)(-b/(2*a)),(double)(sqrt(4*a*c-b*b)/(2*a)),(double)(-b/(2*a)),(double)(sqrt(4*a*c-b*b)/(2*a)));就可以了。

#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{
int a,b,c;
double x,x1,x2,m,n,l,h;
scanf("%d%d%d",&a,&b,&c);
if (a==0)
if (a==0&&b==0) printf("Input error!\n");
else {x=-c/b;printf("x=%f\n",x);}
else {
if (b*b-4*a*c>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c==0) printf("x1=x2=%f\n",x1);
else printf("x1=%f\nx2=%f\n",x1,x2);
}
else {m=-b/(2*a);n=sqrt(4*a*c-b*b)/(2*a);l=-b/(2*a);h=sqrt(4*a*c-b*b)/(2*a);
if(b==0) printf("x1=%fi\nx2=-%fi\n",n,h);
//else printf("x1=%f+%fi\nx2=%f-%fi\n",m,n,l,h);
printf("x1=%f+%fi\nx2=%f-%fi\n",(double)(-b/(2*a)),(double)(sqrt(4*a*c-b*b)/(2*a)),(double)(-b/(2*a)),(double)(sqrt(4*a*c-b*b)/(2*a)));
}
}

getch();
return 0;
}
luzhangweilu
2010-03-26 · TA获得超过128个赞
知道答主
回答量:116
采纳率:0%
帮助的人:111万
展开全部
#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{
int a,b,c;
double x,x1,x2,m,n,l,h;
scanf("%d %d %d",&a,&b,&c);//输入时要有间隔
if (a==0)
if (b==0) printf("Input error!\n");//没必要再来个a==0
else {x=-c/b;printf("x=%f\n",x);}
else {
if (b*b-4*a*c>=0)
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%f\nx2=%f\n",x1,x2);
else if(b*b-4*a*c==0)
printf("x1=x2=%f\n",x1);
}

getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuliuxue1989
2010-03-26
知道答主
回答量:33
采纳率:0%
帮助的人:24.5万
展开全部
因为你的a,b,c定义的是整形,而m,n,l,h定义的是双精度double形,所以用你的方法在用printf输出就有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
psong310
2010-03-26 · TA获得超过254个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:139万
展开全部
大哥!你那abc定义为整型啊,整型除整型还是整型啊!!
m=-b/(2.0*a);l=-b/(2.0*a) 这样ok了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式