永发信息网

这个C语言程序哪里错了啊?求ax^2+bx+c的根,(已知a>=0)

答案:4  悬赏:80  手机版
解决时间 2021-05-13 16:52
  • 提问者网友:低吟詩仙的傷
  • 2021-05-13 08:08
# include <math.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=o) printf("%F",(-b+sqrt(d))/2*a);
else printf("无实根");
}
最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-05-13 09:32
#include <math.h>
#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
是哪错啊? 答案错了? 编译通不过? 扫了一下发现你少了头文件#include<stdio.h>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯