c语言编程 求一元二次方程的实数根。ax^2+bx+c=0,abc均由键盘读入。

如题所述

#include <stdio.h>
#include <math.h>

void fun(float a,float b,float c,float *p) //把结果保存在传入的数组里返回
{
    float delta=b*b-4*a*c;
    if(delta>=0)
        {
            p[0]=(-b+sqrt(delta))/2/a;
            p[1]=(-b-sqrt(delta))/2/a;
        }
    else
    {
        p[0]=0;
        p[1]=0;
    }
}
int main()
{
    float a, b, c,v;
    float  x[2]={0};//用保存结果
    scanf("%f%f%f", &a, &b, &c);
    v = b*b - 4 * a*c;
    if (v >= 0)//不管是实数解是否相等,直接输出
        //如果非要在意两个解相等的情况,把这个判断分开写就是了
    {
        fun(a, b, c,x);
        printf("x1=%f,x2=%f\n", x[0], x[1]);
    }
    else
        printf("输入错误,方程没有实数解.\n");
    getch();
 
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-27
刚做了,不知道是否都是你问的,源程序如下 #include<stdio.h> #include<math.h> int main() { float a,b,c,p,x1,x2;/*a,b,c为方程的系数,p用来存放b*b-4ac 的值,x1,x2存放解*/ scanf("%f%f%f",&a,&b,&c); if((a==0)&(b==0)) { if(c==0) printf("x可为任意数,有无穷多个解\n"); else printf("无解\n"); } else if(a==0&&b!=0) { printf("方程的解为:%f\n",-c/b); } else if(a!=0) { p=b*b-4*a*c; if(p<0) { printf("没有实数解\n"); } else { x1=(-b+sqrt(fabs(p)))/(2*a); x2=(-b-sqrt(fabs(p)))/(2*a); printf("两个解为:x1=%8.4f\nx2=%8.4f\n",x1,x2); } } return 0; }本回答被提问者采纳