这个C语言程序哪里错了啊?求ax^2+bx+c的根,(已知a>=0)
- 提问者网友:低吟詩仙的傷
- 2021-05-13 08:08
main()
{
int a,b,c;
float d;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(d>0) printf("%f或%f",(-b+sqrt(d))/2*a,(-b-sqrt(d))/2*a);
else if(d=o) printf("%F",(-b+sqrt(d))/2*a);
else printf("无实根");
}
- 五星知识达人网友:笑迎怀羞
- 2021-05-13 09:32
#include<stdio.h>
main()
{
int a,b,c;
float d;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(d>0) printf("%f或%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/2*a);
else if(d==0) printf("%F",(-b+sqrt(d))/(2*a);
else printf("无实根");
}
- 1楼网友:归鹤鸣
- 2021-05-13 12:29
d=o这里不是o是0 输出里是f不是F,而且d=0的话输出-b/2*a就可以
缺少头文件stdio.h
我试了几组数,有些可以有些不行,你试试我的吧
#include <stdio.h>
#include <math.h>
double x1,x2,p;
float file1(float a,float b)
{
x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
return 0;
}
float file2(float a,float b)
{
x1=x2=(-b+sqrt(p))/2*a;
return 0;
}
void main()
{
float a,b,c;
printf("请依次输入方程的三个系数:\n");
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
printf("方程是:%.1f*x*x + %.1f*x + %.1f = 0\n",a,b,c);
if(p>0)
{
file1(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else if(p==0)
{
file2(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else printf("方程无解");
}
上面是用公式法解的,这个算法不一样,用牛顿公式
#include<stdio.h>
#include<math.h>
void main()
{float solut(float a,float b,float c);
float a, b,c;
printf("input a,b,c");
scanf("%f,%f, %f",&a,&b,&c);
printf("x=%10.2f\n",solut(a,b,c));
}
float solut(float a,float b,float c)
{
float x=1.5,x0,f,f1;
do
{
x0=x;
f=(a*x0+b)*x0+c;
f1=2*a*x0+b;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-3 && x<=200);
return(x);
}
- 2楼网友:慢性怪人
- 2021-05-13 12:17
首先少了头文件
其次sqrt的返回值是实型的
和整形的数做运算可能会出错
- 3楼网友:一叶十三刺
- 2021-05-13 10:48