第1个回答 2009-07-31
#include <stdio.h>
#include <math.h>
void main ()
{
double a,b,c,delt,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
delt=b*b-4*a*c;
x1=(-b+sqrt(delt))/(2*a);
x2=(-b-sqrt(delt))/(2*a);
printf("x1=%g\n",x1);
printf("x2=%g\n",x2);
}
单行代码出错,可以设断点,我个人认为就在信息框里找错,系统提示你哪出错了……
参考资料:如果您的回答是从其他地方引用,请表明出处
第4个回答 2009-07-31
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,delt,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
delt=b*b-4*a*c;
x1 = (sqrt(delt)-b)/(2*a);
x2 = ((-1)*sqrt(delt)-b)/(2*a);
printf("x1=%g\n",x1);
printf("x2=%g\n",x2);
}
测试如下:
2 1 -1
x1=0.5
x2=-1
Press any key to continue
结果正确,,调试程序在VC6.0下可以F9设置断点,F5开始调试,F10单步运行!
第5个回答 2009-07-31
你的程序只能保证delt大于或者等于0的情况,如果delt小于0,sqrt(delt)是不存在的,所以稍微添加个if条件就OK了
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,delt,x1,x2;
printf("请输入一元二次方程中a,b,c的值:");
scanf("%lf%lf%lf",&a,&b,&c);
delt=b*b-4*a*c;
if(delt>0)
{
x1=(-b+sqrt(delt))/(2*a);
x2=(-b-sqrt(delt))/(2*a);
printf("x1=%.2f,x2=%.2f\n",x1,x2);
}
else if(delt==0)
printf("x1=x2=%.2f\n",(-b)/(2*a));
else
printf("没有实根!\n");
}