1057910307 发表于 2011-3-16 21:14:38

求函数 ax^2+bx+c=0的解 下面是我自己编的 哪里错了?求指教

# include <stdio.h>
# include <math.h>
void main()
{
float a,b,c,X,X1,X2,disc;
printf("please input 3 numbers\n");
scanf("%f %f %f\n",&a,&b,&c);
if(a==0)
{if(b==0)
{
if(c==0)
   printf("方程有无穷多个解\n");
else
        printf("方程无解 \n");
}
else
        printf("方程的解为x=%f\n",-c/b);
}
else
{ if(b*b>=4*a*c)
{
if(b*b==4*a*c)
          printf("方程的解为x1=x2=%f\n",-b/(2*a));
else
          disc=b*b-4*a*c;
          printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
       printf("方程无解\n");
}
}

zhangtpku 发表于 2011-3-17 00:05:27

改那个什么设置了再发代码多好啊,这样看的晕

风扫地 发表于 2011-3-17 01:15:48

本帖最后由 风扫地 于 2011-3-17 19:20 编辑

if(b*b==4*a*c)
          printf("方程的解为x1=x2=%f\n",-b/(2*a));
else
          disc=b*b-4*a*c;
          printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
         printf("方程无解\n");
}
}


这里你忽略了一个问题。。。if(else)判断后,后面的语句只要不是括号括起来的只能执行一条语句..
所以
else
          disc=b*b-4*a*c;
          printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
×××××××××××××××××××××××××××××××××××××××××××××××××××
disc=b*b-4*a*c;
          printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
××××××××××××××××××××××××××××××××××××××××××××××××××
这里要括号括起来。。。
这就是你为什么当b^2=4ac的时候会有两个输出的原因。。

建议不要在scanf函数的格式部分不要加一些无关代码。。。、、比如说\n

OK!。。我测试了。修改了以后没有问题了。。

hevv 发表于 2011-3-17 16:10:42

# include <iostream>

using namespace std;
# include <math.h>
void main()
{
        float a,b,c,X,X1,X2,disc;
        cout<<"lease input 3 numbers:\n";
                cin>>a>>b>>c;
        if(a==0)
        {
                if(b==0)
                {
                        if(c==0)
                                cout<<"方程有无穷多个解\n";
                        else
                                cout<<"方程无解 \n";
                }
                else
                        cout<<"方程的解为x=%f\n"<<-c/b;
        }
        else
        {
                if(b*b>=4*a*c)
                {
                        if(b*b==4*a*c)
                                cout<<"方程的解为x1=x2="<<-b/(2*a);
                        else
                        {
                                disc=b*b-4*a*c;
                                cout<<"方程的解为x1, x2="<<(-b+sqrt(disc))/(2*a)<<" "<<(-b-sqrt(disc))/(2*a);
                        }
                }
                else
                        cout<<"方程无解\n";
        }
}

用c语言输入的时候 好像字符接收不到!还是用c++这个熟悉的语言!

追梦1航海 发表于 2014-3-17 10:13:28

# include <stdio.h>
# include <math.h>
void main()
{
        float a,b,c,X,X1,X2,disc;
        printf("please input 3 numbers\n");
        scanf("%f %f %f",&a,&b,&c);
        if(a==0)
        {
                if(b==0)
                {
                        if(c==0)
                                printf("方程有无穷多个解\n");
                        else
                                printf("方程无解 \n");
                }
                else
                        printf("方程的解为x=%f\n",-c/b);
        }
        else
        {
                if(b*b>=4*a*c)
                {
                        if(b*b==4*a*c)
                                printf("方程的解为x1=x2=%f\n",-b/(2*a));
                        else
                        {
                                disc=b*b-4*a*c;
                                printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
                        }
                }
                else
                        printf("方程无解\n");
        }
}
页: [1]
查看完整版本: 求函数 ax^2+bx+c=0的解 下面是我自己编的 哪里错了?求指教