main()
{float a,b,c,d,x1,x2;
scanf("%f,%f,%f,&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{x1=(-b)+sqrt(d)/(2*a),x2=(-b)+sqrt(d)/(2*a);
printf("x1=%f,x2=%f,x1,x2")}
else if(d<0)
printf("donot real root\n");
else {x1=x2=(-b)/2*a;
printf("x1=x2=%f\n",x1);
}
这个题目错了没有啊 ?
----------------解决方案--------------------------------------------------------
main()前加#include<math.h>
自己试试,sqrt()市函数库中的函数
----------------解决方案--------------------------------------------------------
在VC下还要求加上#incldue<stdio.h>
另外除了一些地方少了; "的问题外应该算是没错的。
我也不是细心的人,大家也看看。
----------------解决方案--------------------------------------------------------
{x1=(-b)+sqrt(d)/(2*a),x2=(-b)+sqrt(d)/(2*a);
此行错误x1=(-b)+sqrt(d)/(2*a)后面用分号
printf("x1=%f,x2=%f,x1,x2")} 此行错误,对照书就知道什么地方错了
----------------解决方案--------------------------------------------------------
main()
{float a,b,c,d,x1,x2;
scanf("%f,%f,%f,&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{
x1=(-b)+sqrt(d)/(2*a),x2=(-b)+sqrt(d)/(2*a);
printf("x1=%f,x2=%f,x1,x2"); /*这里应该有;*/
}
else if(d<0)
printf("donot real root\n");
else
{x1=x2=(-b)/2*a;
printf("x1=x2=%f\n",x1);
} /*这里还少一个'}'*/
}
----------------解决方案--------------------------------------------------------
main()
{float a,b,c,d,x1,x2;
scanf("%f,%f,%f,&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{x1=(-b)+sqrt(d)/(2*a),x2=(-b)+sqrt(d)/(2*a);
printf("x1=%f,x2=%f,x1,x2")}
else if(d<0)
printf("donot real root\n");
else {x1=x2=(-b)/2*a;
printf("x1=x2=%f\n",x1);
}
这个题目错了没有啊 ?
第一点:首先你先把求根公式弄清楚,你这程序里公式都错了
第二点:这方程一定是二次的吗?对了,求根前先判断a是否等于0,等于0的话,这根就用不到求根公式了
第三点:浮点数比较大小,不是那么比较的例如在定义m为float时,要判断它等于0,必须有(m<=le-6)&&(m>=-le-6).
那这程序是有问题的。
最后:一定别忘了加应该加的头文件
----------------解决方案--------------------------------------------------------