回 帖 发 新 帖 刷新版面

主题:求一圆二次方程的解,哪里错了,谢谢

#include<stdio.h>
#include<math.h>
void main()
{
    int a,b,p,c,disc;
    float q,x1,x2,f,m,n;
    scanf("%d,%d,%d",&a,&b,&c);
    disc=b*b-4*a*c;
    p=-b/(2*a);
    q=sqrt(disc)/(2*a);
    x1=p+q;x2=p-q;
    f=sqrt(-disc)/(2*a);
    m=p+fi;
    n=p-fi;
    if(a!=o)
    {
        if(b*b-4*a*c>0)
            printf("%d,%d\n",x1,x2);
        else
            if(b*b-4*a*c=o)
                printf("%f\n",p);
            else
                printf("%f,%f\n",m,n);
    }
    else
        printf("非二次方程\n");
}

回复列表 (共2个回复)

沙发

q=sqrt(disc)/(2*a);
f=sqrt(-disc)/(2*a);
你知道disc可正可负,所以上面两个必有一个算不出来!
m=p+fi;
n=p-fi;
计算机不是人,它理解不了虚数单位i和字母i的区别。

下面是修改后的程序,想显示多位小数可以把%.2f中的2改称4,5,6等或者改成%f。
别把计算机当人看,它很笨的,什么都得讲清楚才行。
#include<stdio.h>
#include<math.h>
void main()
{
    double a,b,p,c,disc,q;
    scanf("%lf,%lf,%lf",&a,&b,&c);
    if(a==0.0)
        printf("非二次方程\n");
    else
    {
        disc=b*b-4*a*c;
        p=-b/(2*a);
        q=sqrt(fabs(disc))/(2*a);
        if(disc>=0)
            printf("x1=%.2f   x2=%.2f\n",p+q,p-q);
        else
            printf("x1=%.2f+%.2fi   x2=%.2f-%.2fi\n",p,q,p,q);
    }
}

板凳


谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册