永发信息网

C++一道题请教高手帮忙

答案:4  悬赏:10  手机版
解决时间 2021-07-30 10:35
C++一道题请教高手帮忙
最佳答案
#include<iostream>
#include<cmath>
using namespace std;
void fun(double a, double b, double c)
{
double d = b*b - 4*a*c;
double x1,x2;
if (d < 0)
{
cout <<"方程无实根\n";
}
else if (d == 0.0)
{
cout <<"方程有两个相同的实根:\n";
x1 = -b/(2*a);
cout << "x1=x2=" << x1 << endl;
}
else if (d > 0)
{
cout <<"方程有两个不同的实根:\n";
x1 = (-b+sqrt(d))/(2*a);
x2 = (-b-sqrt(d))/(2*a);
cout << "x1=" << x1 << ",x2=" << x2 << endl;
}
}


void main()
{
double a, b, c;
cout << "请输入一元二次方程的三个系数:\n";
cout <<"a=";
cin >> a;
cout <<"b=";
cin >> b;
cout <<"c=";
cin >> c;
cout << endl;
fun(a,b,c);
}

VS2005上测试并通过哈。。
全部回答

上面的兄弟你编写的程序里我认为存在不规范的语法,d是实数型的不能够拿来直接的和0进行比较,我们应该找个较小的数来和d比较;还有就是在程序的严密上也还不够严密应有4中情况:

1).a=0,不是二次方程

2).b*b-4*a*c=0,有两个相等的实根

3).b*b-4*a*c>0, 有两个不等的实根

4).b*b-4*a*c<0,有两个共轭复根

#include<iostream.h> #include<math.h> void fun(double a, double b, double c) { double disc,x1,x2,p,q; if(fabs(a)<1e-6) cout<<"不是一元二次方程!"<<endl; else { disc=b*b-4*a*c; if(fabs(disc)<=1e-6) //判断是否有两个相等的实根 cout<<"x1-x2="<<-b/(2*a)<<endl; else { if(disc>1e-6) //判断有两个不相等的实根 { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); cout<<"x1="<<x1<<endl; cout<<"x2="<<x2<<endl; } else { p=-b/(2*a); q=sqrt(fabs(disc))/(2*a); cout<<"x1="<<p<<"+"<<q<<"i"<<endl; cout<<"x2="<<p<<"-"<<q<<"i"<<endl; } } }

} void main() { double a,b,c; cout<<"请输入3个系数:"<<endl; cin>>a>>b>>c; fun(a,b,c); } //注意我们的disc定义成的是个实数所以不能直接的和0进行比较。1e-6表示的是一个很小的数。用这种方法来判断disc和0的关系

应该能满足你的要求:) #include <math.h> #include <stdio.h> void fun( double a, double b, double c ) { double delta = b*b-4*a*c; double x1, x2; if ( delta < 0 ) { printf( "\n方程无实根" ); } else { x1 = ( -b + sqrt( delta ) ) / 2*a; x2 = ( -b - sqrt( delta ) ) / 2*a; if ( delta != 0 ) { printf( "\n方程有两个不同的实根:\n\n" ); printf( "x1=%.2f x2=%.2f\n\n", x1, x2 ); } else { printf( "\n方程有两个相同的实根:\n\n" ); printf( "x1=x2=%.2f\n\n", x1 ); } } } int main() { double a, b, c; printf( "请输入一元二次方程的三个系数:\n" ); scanf( "a=%lf, b=%lf, c=%lf", &a, &b, &c ); fun( a, b, c ); }

#include <iostream.h> #include<math.h>

void fun(double a, double b, double c) { double x1, x2; if(a == 0) { if(b == 0) cout << "没有实根 "; else{ x1 = c*(-1)/b; cout << "有一个实根: " << x1 << "\n"; } } else{ double dDelta = b*b-a*c*4; if(dDelta > 0) { x1 = ( b*(-1)+sqrt(dDelta))/a/2; x2 = ( b*(-1)-sqrt(dDelta))/a/2; cout << "有两个实根: \n" << x1 << "\n" << x2 << "\n"; } else if(dDelta == 0) { x1 = b*(-1)/a/2; cout << "有一个实根: " << x1 << "\n"; } else cout << "没有实根 "; } }

void main() { int a, b, c; cout << "输入 a,b,c 的值:"; cin >> a >> b >> c; fun(a, b, c); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是学设计的我用哪款本本好?联想Y550和惠普
成都航空安全吗,阿塞拜疆航空巴库中转要办签
什么有效减肥方法?
诺机亚手机6110怎么样
河南明年高考预计会有多少考生啊?
驿城区驻马店海洋装饰五金大全地址在哪,我要
18、Our teacher told us if it _____(not sn
5800改CODE
中国人为什么要使用日本的产品,中国什么时候
帮我起个好听的QQ名字?
FC养DT孩子好 还是DF孩子好呢
怎样克制自己的欲望?
鲁山县平顶山绿佳电动车这个地址怎么能查询到
三个鱼在一起读什么字求大神帮助
爸爸叫陈杰妈妈叫杨青孩子叫什么名字????
推荐资讯
开通牧场怎么开
阅览网页上下拉时有波纹、应该下什么驱动器?
河南移动动感地带的交套餐费送套餐费活动下次
电脑问题。开机后不动他就会进入到几个长方条
义马市三门峡义马融鑫地址有谁知道?有点事想
华容县岳阳海尔厨卫电器怎么去啊,谁知道地址
黄石在哪能买到天然水晶手链。
12月29号(魔蝎座)和2月15号水瓶座啊配啊?
N手 电脑估价
测试情侣默契的问题,默契度测试题目搞笑一点
新武林外传网2雄霸的金元宝能换多少金?
鹿邑县周口中国移动地址有谁知道?有点事想过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?