| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 765 人关注过本帖
标题:求教用C解一个方程
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:9 
求教用C解一个方程
求方程ax2+bx+c=0的根,考虑情况,1,有两个不等的实根
2,有两个相等的实根
请大侠写详细点,我是初学者,最好带上注释,谢谢。
搜索更多相关主题的帖子: 方程 
2010-03-18 20:00
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
谭浩强的书 108页有
2010-03-18 20:07
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
他的哪本书啊
2010-03-18 20:10
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
在网上可以下载到吗,是哪本,
2010-03-18 20:12
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
#include <math.h>
#include <stdlib.h>
int main(void)
{
    double a, b, c, x1, x2, tmp;
    scanf("%lf%lf%lf", &a, &b, &c);
    tmp = b*b-4*a*c;//b^2-4ac
    if (tmp < 0)
    {
        printf("no root!\n");
        exit(1);
    }else if (fabs(tmp-0) < 0.0000001)//判断是否等于0,是的话就有两个相等的实根
    {
        x1 = x2 = (-b+sqrt(tmp))/(2*a);
    }else  //两个不等的实根
    {
        x1 = (-b+sqrt(tmp))/(2*a);
        x2 = (-b-sqrt(tmp))/(2*a);
    }
    printf("x1 = %lf, x2 = %lf\n", x1, x2);
}
如果没记错公式的话应该就是这个样子
2010-03-18 21:01
jrkaho
Rank: 2
等 级:论坛游民
帖 子:24
专家分:55
注 册:2010-3-13
收藏
得分:7 
#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,c,temp;
   
    double x1,x2;
   
    temp=0;
   
    /* The Equation is   a*(x*x)+b*x+c=0 */
   
    printf("Enter the Equation:\n");
   
    scanf("%d\n", &a);
    scanf("%d\n", &b);
    scanf("%d\n", &c);
   
   
    temp = (b*b)-(4*a*c);
   
    /* check  the Equation  whether is solvable*/
   
    if(temp < 0)
    {
        printf("Error! There is no answer!\n");
        
        exit(1);
        }
   
        /* The two answers are same */
        
        if(temp==0)
        {
            x1 = ((-1)*b) / (2*a);
            
            x2 = ((-1)*b) / (2*a);
            
            printf("The answer is same:%f\n",x1);
            
            
            }
        
      /* The answers are different*/
            if(temp>0)
            {
                x1 = ((-1)*b+sqrt(temp)) / (2*a);
               
                x2 = ((-1)*b-sqrt(temp)) / (2*a);
               
                printf("The answer is different:x1=%f , x2=%f\n",x1,x2);
               
            
                }
    return 0;
    }

[ 本帖最后由 jrkaho 于 2010-3-18 21:08 编辑 ]
2010-03-18 21:04
司徒瑾贤
Rank: 2
等 级:论坛游民
帖 子:25
专家分:44
注 册:2010-3-18
收藏
得分:7 
回复 楼主 seep666
#include<stdio.h>
#include<math.h>
 
int main(viod)
{ /*声明变量a b c并初始化*/

  float  a=0.0f;
  float  b=0.0f;
  float  c=0.0f;
  /*用来存储b*b-4*a*c  */            
  float  data=0.0f;
  /*用来存储两个不同的实根*/
  float  root1=0.0f,root2=0.0f;
  /*用来存储虚根的  实部 和 虚部*/   
  float  realpart=0.0f;
  float  imagpart=0.0f;
  loop:  printf("Please Enter The Value Of a b c:\n");  
  scanf("%f ,%f, %f",&a,&b,&c);
  /*当a=0时*/

  if(fabs(a)<1e-5)
  /*如果b=0*/

   
if(fabs(b)<1e-5)
      {  
      
printf("\nIt Is Error, Please Enter Again!\a\a\a");
        goto loop;
      }
     else
   /*如果b不等于0时输出 -c/b的值*/
   
     printf("\nThe Function Has A Special Root,Is: %.2f.",-c/b);
  else
    { data=pow(b,2)-4*a*c;
     if(data>1e-5)
   /*当b*b-4*a*c>0时 方程有两个不等的实根*/
       { printf("The Function Has Two Real Roots");
        root1=(-b+sqrt(data))/(2*a);
        root2=(-b+sqrt(data))/(2*a);
        printf(" They Are x1=%.2f And x2=%.2f.",root1,root2);}
    /*当b*b-4*a*c=0时方程有两个相等的实根*/
     else  if(data==0)
             printf("There Are Two Equal Roots:x1=x2=%.2f."-b/(2*a));
    /*当 b*b-4*a*c<0时方程有两个虚根*/
            else
              { printf("The Function Has Two Imaginary Roots");
              realpart=-b/(2*a);        
              imagpart=sqrt(-data)/(2*a);
              printf(" They Are x1=%.2f+%.2fi And x2=%.2f-%.2fi.",
                     realpart,imagpart,realpart,imagpart);}
     }
   return 0;   
                     
}
由于时间仓促此程序未经测试,请自己试一下吧!如有建议可以给我发邮件。邮箱situjinxian@



[ 本帖最后由 司徒瑾贤 于 2010-3-19 15:39 编辑 ]
2010-03-18 23:22
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
回复 6楼 jrkaho
谢谢
2010-03-19 12:21
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
有的不是看不太懂,不过我还是回去慢慢看一下
2010-03-19 12:22
helper
Rank: 2
等 级:论坛游民
帖 子:2
专家分:11
注 册:2010-3-19
收藏
得分:6 
#include <stdio.h>
#include <math.h>

int main()
{
    float a,b,c;
    float x1,x2;
    float deta,m;
    printf("请输入一元二次方程的系数:\n");
    scanf("%f%f%f",&a,&b,&c);
    deta=sqrt(b*b-4*a*c);
    m=-b/(2*a);
    if(deta<0)
        printf("该方程没有实数根!\n");
    if(deta==0)
    {
        printf("该方程有两个相等的实数根,分别为:\n");
        x1=x2=m;
        printf("x1=x2=%.2f\n",m);
    }
    if(deta>0)
    {
        printf("该方程有两个不同的实数根,分别为:\n");
        x1=m+deta/(2*a);
        x2=m-deta/(2*a);
        printf("x1=%.2f,x2=%.2f\n",x1,x2);
    }
    return 0;
}
2010-03-19 23:33
快速回复:求教用C解一个方程
数据加载中...
 
   



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

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