搜索
查看: 1096|回复: 16
打印 上一主题 下一主题

求大神给改进啊!!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-24 18:56:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#include <stdlib.h>
int main()
{       
    double a,b,c,x;
    printf("请输入二次项系数(若输入0,将退出):");
    scanf("%lf",&a);
    if(a<0.0000001&&a>-0.0000001)exit(0);
    printf("请输入一次项:");
    scanf("%lf",&b);
    printf("请输入常数项:");
    scanf("%lf",&c);
        if(b*b-4*a*c<0){
    printf("无解");}
    else
    {
    double d=100000;
    double e=-100000;
    double i;
    i=(e+d)/2;
    x=a*i*i+b*i+c;
    while(x>0){
    e=i;
    }
    while(x<0){
    d=i;}
    if(x<0.0000001&&x>-0.0000001)
    printf("%lf",i);
    }
        system("pause");
        return 0;
}


沙发
 楼主| 发表于 2014-8-25 16:30:27 | 显示全部楼层
谢谢啊!!!
板凳
 楼主| 发表于 2014-8-25 16:35:28 | 显示全部楼层
981013 发表于 2014-8-25 09:16
一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次 ...

可是我不会幂运算啊??求大神说说啊!!
地板
 楼主| 发表于 2014-8-25 16:58:52 | 显示全部楼层
981013 发表于 2014-8-25 09:16
一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次 ...


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{       
    double a,b,c,d,e,x1,x2;
    printf("请输入二次项系数(若输入0,将退出):");
    scanf("%lf",&a);
    if (fabs(a) < 0.0000001)exit(0);
    printf("请输入一次项:");
    scanf("%lf",&b);
    printf("请输入常数项:");
    scanf("%lf",&c);
        if(b*b-4*a*c<0)
    printf("无解");
        else
    {
    d=b*b-4*a*c;
    e=pow(d,1/2);
    x1=(-b+e)/2*a;
    x2=(-b-e)/2*a;
    printf("%lf",x1);
    printf("%lf",x2);
    }
        system("pause");
        return 0;
}
行吗??
5#
 楼主| 发表于 2014-8-25 20:28:44 | 显示全部楼层
981013 发表于 2014-8-25 17:07
2*a要加括号,平方根有sqrt函数,没必要用1/2次方模拟

哦哦,我不知道啊!!
6#
 楼主| 发表于 2014-8-26 10:46:39 | 显示全部楼层
rosynirvana 发表于 2014-8-24 20:55
为什么要用二分逼近?100000和-100000这两个初始取值也完全没道理

二分法初始值应该取什么啊?大神!!
7#
 楼主| 发表于 2014-8-26 15:54:44 | 显示全部楼层
rosynirvana 发表于 2014-8-26 11:34
这个问题预设什么值都不合适

别的问题哪??????????
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表