c语言,求根公式

#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,x1,x2;
scanf("%f%f%f",&a,&b,&c);
{if(a==0)
{if(b==0)
{if(c==0)
printf("该式为恒等式\n");
else
printf("该式不成立,请重新输入a,b,c\n");}
else
x1=c/b;
printf("x1=x2=%f\n",x1);}
else
d=b*b-4*a*c;}
if(d<0)
{d=-d;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f,虚根\n",x1,x2);}
else
{x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);}
return 0;}

你的if语句那的括号有问题

#include<stdio.h>
#include<math.h>
int main(){
    double a,b,c,d,x1,x2;
    scanf("%f%f%f",&a,&b,&c);
    if(a==0){
        if(b==0){
            if(c==0)
                printf("该式为恒等式\n");
            else
                printf("该式不成立,请重新输入a,b,c\n");
        }else{
            x1=c/b;
            printf("x1=x2=%f\n",x1);
        }else
           d=b*b-4*a*c;
     if(d<0){
         d=-d;
         x1=(-b+sqrt(d))/(2*a);
         x2=(-b-sqrt(d))/(2*a);
         printf("x1=%f,x2=%f,虚根\n",x1,x2);
     }else{
         x1=(-b+sqrt(d))/(2*a);
         x2=(-b-sqrt(d))/(2*a);
         printf("x1=%f,x2=%f\n",x1,x2);
     }
     return 0;
}

追问

怎么改帮忙的、发个正确的看看

追答

代码不是贴出来了么……

追问

抱歉啊,我是新手看不懂。。。

追答

等下,我看看,你输入的三个参数,a,b,c分别代表什么意思?

追问

就是ax2+bx+c=0求这个的根的情况

追答#include <stdio.h> 
#include <math.h>
void main()
{
    float a,b,c,x1,x2,judge;
    printf("please input three coefficient:");
    scanf("%f,%f,%f",&a,&b,&c);
    if(a==0)
         printf("not one yuan quadratic equation");
    else
        {
            judge=b*b-4*a*c;
            if(judge<0)
                 printf("no roots");
            else if (judge==0)
                 printf("x1=x2=%f",(-b)/(2*a));
            else 
                printf("x1=%f,x2=%f",((-b)+sqrt(b*b-4*a*c))/(2*a),((-b)+sqrt(b*b-4*a*c))/(2*a));
         }
}

追问

...单写判断的我也会,但是我想还要算若a=0时不是一个一元一次的方程。。那个他、也要求的,包括当b=0时,有可能是恒等式,有可能是不等式,无解。。。

追答

那就在前面再加几个if判断

if(a==0&&b==0){
    if(c==0)
        printf("恒成立");
    else
        printf("不成立");
 }else if(a==0&&b!=0){
     printf("x=%f",-c/b);
 }else{
     judge=b*b-4*a*c;
     if(judge<0)
         printf("no roots");
     else if (judge==0)
         printf("x1=x2=%f",(-b)/(2*a));
     else 
         printf("x1=%f,x2=%f",((-b)+sqrt(b*b-4*a*c))/(2*a),((-b)+sqrt(b*b-4*a*c))/(2*a));  
 }

这样就可以了

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答