| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1041 人关注过本帖, 1 人收藏
标题:关于编写求解一元二次方程
只看楼主 加入收藏
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
收藏(1)
 问题点数:0 回复次数:5 
关于编写求解一元二次方程
#include "stdio.h"
#include "math.h"

/*求一元二次方程ax*x+bx+c=0的解*/
main()
{
float a,b,c,x1,x2,d;
printf("请输入a:");
scanf("%f",&a);
printf("请输入b:");
scanf("%f",&b);
printf("请输入c:");
scanf("%f",&c);
d=b*b-4*a*c;

if(d < 0)
printf("方程没有实数解。\n");

if (d = = 0) //这里直接与0比较会有数据的误差么?
{
x1=(-b)/(2*a);
printf("x1=%f\n",x1);
}
if (d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);}
}

---------------------------------
搜索更多相关主题的帖子: include 
2015-03-21 16:01
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
跟0比较没有误差。只是你的函数构造不完善。
首先,你得保证它是个一元二次方程。
其次,对于这种选择性的判定。最好用else if  ,不然电脑会把你的每一种情况都去执行,耗费资源。

授人以鱼,不如授人以渔
2015-03-21 17:23
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
收藏
得分:0 
这是我写的一个关于一元二次方程 仅供参考 不足之处 还请指出 !
程序代码:
/*** 文件名:求解一元二次方程 ***/
#include"stdio.h"
#include"math.h"
void main()
{
   
  float a,b,c;
  printf("初始一元二次方程:ax*x+bx+c=0 请输入 a b c (a!=0).\n");
  scanf("%f%f%f",&a,&b,&c);
  printf("一元二次方程:%0.2fx*x+%0.2fx+%0.2f=0\n",a,b,c);
   {
     if(a==0.0)
        if(b==0.0)
        printf("该方程没有实数根,因为a=0.\n");
      else
          printf("该方程一个实数根为 %f\n",-c/b);
    else
       {
         float disc,twoa,term1,term2;
         disc=b*b-4*a*c;
         twoa=2*a;
         term1=-b/twoa;
         term2=sqrt(fabs(disc))/twoa;
         if(disc<0.0)
            printf("该方程两个虚根分别为:x1=0.2%f,x20.2=%f\n",term1,term2);
          else
            printf("该方程两个实根分别为: x1=%0.2f,x2=0.2%f\n",term1+term2,term1-term2);
        }
   }
  
}
void 类型 可以不用返回值

<%谦虚学习,用心做人,没有最好,只有更好!%>
2015-03-21 19:07
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
收藏
得分:0 
回复 2楼 执笔画江山
哦,这代码在网上查的,没仔细检查。就是听说好像会有误差,用的是fabs(...)<1e-6之类的判断是否为0
2015-03-21 22:56
无解号
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-3-14
收藏
得分:0 
#include<studio.h>
#include"math.h"
void main()
{float a,b,c,disc,x1,x2;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);
}
2015-03-22 18:07
longzaidu
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2015-3-23
收藏
得分:0 
# include <stdio.h>
# include <math.h>

int main(void)
{
    double a, b, c,delta, x1, x2, x;
    char ch;
    do
    {
        printf("请输入一元二次方程的三个系数(a != 0):\n");
        printf("a =");
        scanf("%lf", &a);
        printf("b =");
        scanf("%lf", &b);
        printf("c =");
        scanf("%lf", &c);
        delta = b*b - 4*a*c;
        if (delta >0)
        {
            x1 = (-b + sqrt(delta))/(2*a);
            x2 = (-b - sqrt(delta))/(2*a);
            printf("该一元二次方程有两个解:\n");
            printf("x1 =%lf,x2 =%lf\n", x1, x2);
        }
        else if (0 == delta)
        {
            x = -b/(2*a);
            printf("该一元二次方程有唯一解:\n");
            printf("x =%lf\n",x);
        }
        else
            printf("该一元二次方程无解!\n");
        printf("继续请输入(y / Y): ");
        scanf(" %c", &ch);
        
    }while ('y'==ch || 'Y'==ch);

    return 0;
}
2015-03-23 19:23
快速回复:关于编写求解一元二次方程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved