鱼C论坛

 找回密码
 立即注册
查看: 3216|回复: 4

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

[复制链接]
发表于 2011-3-16 21:14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 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");
}
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-17 00:05:27 | 显示全部楼层
改那个什么设置了再发代码多好啊,这样看的晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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!。。我测试了。修改了以后没有问题了。。

测试数据。

测试数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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++这个熟悉的语言!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表