第三章数程序设计初步--分支结构项目5求一元二次方程的根

上机内容:输入一元二次方程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进行求解
上机目的:分支结构程序设计
我的程序:
/*  
* 程序的版权和版本声明部分:  
* Copyright (c) 2013, 青岛农业大学理信学院  
* All rights reserved.  
* 文件名称:求一元二次方程的根.cpp  
* 作    者:幻影行者  
* 完成日期:2013 年 7 月 21 日  
* 版 本 号:v1.0  
* 对任务及求解方法的描述部分: 
* 输入描述:输入方程各项系数a,b,c  
* 问题描述:输入一元二次方程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进行求解 
* 程序输出:输出方程的解  
* 问题分析:先后对a,b的取值范围进行讨论。分三种情况:
            (1) a!=0时方程为一元二次方程,此时在讨论根的判别式delta,大于0,有两个不等实根,等于0,有两个相等实根,小于0无实根
            (2) a=0且b!=0时方程为一元一次方程
            (3) a=0,b=0时不是方程。
* 算法设计:略  
*/ 

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c,delta;//方程的各项系数a,b,c,根的判别式delta
	float x1,x2;  //方程的根
	cout<<"请输入方程ax^2+bx+c=0各项系数a,b,c的值:";
	cin>>a>>b>>c;
	delta=b*b-4*a*c;
	if(a!=0)     //首先讨论a的取值,a!=0确保是一元二次方程
	{   
		if(a==1)                                              //改进:显示输入各系数后所得的方程
			cout<<"所求方程为"<<"x^2+"<<b<<"x+"<<c<<"=0,";
		else if(a==-1)
            cout<<"所求方程为"<<"-x^2+"<<b<<"x+"<<c<<"=0,";
		else
			cout<<"所求方程为"<<a<<"x^2+"<<b<<"x+"<<c<<"=0,";
		
		if(delta>=0)  //delta大于等于0方程有实根
		{
			if(delta>0)
			{
				cout<<"方程有两个不相等的实数根:"<<endl;
				x1=float(-b+sqrt(delta))/2*a;  //用求根公式求解
				x2=float(-b-sqrt(delta))/2*a;
				cout<<"x1="<<x1<<'\t'<<"x2="<<x2<<endl;
			}
			else
			{
				cout<<"方程有两个相等的实数根:"<<endl;
				x1=x2=float(-b)/2*a;
				cout<<"x1=x2="<<x1<<endl;
			}
		}
		else   //delta小于0无实根
		{
			cout<<"方程无实数根!"<<endl;
		}
	}
	else  //a=0的情况
	{
		if(b!=0)  //a=0,b!=0,方程此时为一元一次方程
		{   
			if(b==1)                                  //改进:显示输入各系数后所得的方程
				cout<<"所求方程为"<<"x+"<<c<<"=0,";
			else if(b==-1)
				cout<<"所求方程为"<<"-x+"<<c<<"=0,";
			else
				cout<<"所求方程为"<<b<<"x+"<<c<<"=0,";
			
			cout<<"该方程为一元一次方程,其根为:";
			cout<<"x="<<float(-c)/b<<endl;
		}
		else    //a=0,b=0,不是方程
		{
			cout<<"不是方程!"<<endl;
		}
	}
	return 0;
}


运行结果:





心得体会:
            求方程ax^2+bx+c=0的根,先后对a,b的取值范围进行讨论。分三种情况:
            (1) a!=0时方程为一元二次方程,此时在讨论根的判别式delta,大于0,有两个不等实根,等于0,有两个相等实根,小于0无实根
            (2) a=0且b!=0时方程为一元一次方程
            (3) a=0,b=0时不是方程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值