| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 911 人关注过本帖
标题:一元二次方程求根的程序 求指教
只看楼主 加入收藏
jason那夏
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
一元二次方程求根的程序 求指教
无警告  但是为什么无结果输出# include <stdio.h>
# include <math.h>
float root1 ( float a,float b,float c, float delta)
{ float term1,term2;
double x1,x2;
delta=b*b-4*a*c;
term1=-b/(2*a);
term2=sqrt(delta)/(2*a);
x1=term1+term2;
x2=term1-term2;
printf("%.2f,%.2f",x1,x2);}
float root2 (float a,float b,float c,float delta)
{ float term1,term2,x1,x2;
delta=b*b-4*a*c;
term1=-b/(2*a);
term2=sqrt(delta)/(2*a);
x1=term1+term2;
x2=term1-term2;
printf("%.2f,%.2f",x1);}
float root3(float a,float b,float c,float delta)
{ float term1,term2,x1,x2;
delta=b*b-4*a*c;
term1=-b/(2*a);
term2=sqrt(abs(delta))/(2*a);
x1=term1+term2;
x2=term1-term2;
printf("%.2f,%.2f",x1,x2);}
main()
{float a,b,c,delta;
printf("input a,b,c");
scanf("%.2f,%.2f,%.2f",&a,&b,&c);
delta=b*b-4*a*c;
if (a==0)
{if(b==0) printf("no root of this formular");
else printf("the single root is %.2f",-b/c);}
  else if(delta>0){float root1(float a,float b, float c,float delta);}
  else if(delta=0){ float root2 (float a,float b,float c,float delta);}
  else{float root3 (float a,float b,float c,float delta);}}
搜索更多相关主题的帖子: include double 
2014-05-18 00:34
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你函数的调用格式都是错的,回去先看看书,对照一下。
另外,程序应该有缩进格式。黑呼呼的一片,你受助的概率会小的多。你先改一下吧。
2014-05-18 07:59
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
楼上说的对,编码习惯不好,需要改进下。

我不是砖家,要努力成为砖家。
2014-05-18 08:20
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
把你的算法说一下. 貌似主要问题不在编程,而在与你的思路.

看了你的程序,感觉你的思路乱了.

代码测试环境:  WinXP+C-Free5.0.
2014-05-18 14:22
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:15 
在这部分(重排后)的代码中,
    printf( "input a,b,c" );
    scanf( "%.2f,%.2f,%.2f", &a, &b, &c );
    delta = b * b - 4 * a * c;
    if ( a == 0 ) {
        if ( b == 0 ) printf( "no root of this formular" );
        else printf( "the single root is %.2f", -b / c );
    } else if ( delta > 0 ) {
        float root1( float a, float b, float c, float delta );
    } else if ( delta = 0 ) {
        float root2 ( float a, float b, float c, float delta );
    } else {
        float root3 ( float a, float b, float c, float delta );
    }
你试图用
        float root1( float a, float b, float c, float delta );
的形式调用函数,但这其实只是一个函数声明。调用形式应该为:
        root1( a, b, c, delta );
root2、root3 也是一样。

整个程序比较累赘,有待精简。


[ 本帖最后由 top398 于 2014-5-18 14:51 编辑 ]
2014-05-18 14:49
BlackDUKE
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2014-5-18
收藏
得分:5 
回复 楼主 jason 那夏
好乱啊,这是我以前写的
#include "stdafx.h"
#include <math.h>

int main(void)
{
    double a, b, c;
    double delat;
    double x1, x2;

    do
    {
        printf ("请输入3个系数 \n");
        printf("a = ");
        scanf_s("%lf", &a);

        printf("b = ");
        scanf_s("%lf", &b);

        printf("c = ");
        scanf_s("%lf", &c);

        delat = b*b - 4*a*c;
        if (delat > 0)
        {
            x1 = (-b + sqrt(delat)) / (2*a);
            x2 = (-b - sqrt(delat)) / (2*a);
            printf("该方程有两个解,x1=%lf, x2=%lf\n", x1, x2);
        }
        else if(0 == delat)
        {
            x1 = x2 = (-b) / (2*a);
            printf("该方程有两个相同的解,x1=x2=%lf\n", x1, x2);
        }
        else
        {
            printf("该方程无实数解\n");
        }
        
    }while (1);

    return 0;
}
2014-05-18 18:30
黑色的蚊子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2014-5-17
收藏
得分:0 
朋友,要是程序简便一些,你会发先许多意想不到的问题竟然会出现的哦。
2014-05-26 09:09
快速回复:一元二次方程求根的程序 求指教
数据加载中...
 
   



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

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