求方程的根

题目:求ax^2+bx+c=0方程的根。a,b,c由键盘输入。

代码:

不用函数:

#include<stdio.h>
#include<math.h>
int main(){
	double a,b,c,p,q,r,disc1,disc2,x1,x2;      //ax^2+bx+c=0 
	scanf("%lf %lf %lf",&a,&b,&c);
	disc1=b*b-4*a*c;
	p=-b/(2*a);
	q=sqrt(disc1)/(2*a);
	if(disc1==0){        //只有一个根 
	printf("x=%.2f\n",p); 
    }
    else if(disc1>0){  //有两个根 
    	x1=p+q;
    	x2=p-q;
    	printf("x1=%.2f x2=%.2f\n",x1,x2);
	}
	else{     //复根 
		disc2=4*a*c-b*b;
		r=sqrt(disc2)/(2*a);
		printf("x1=%.2f+%.2fi x2=%.2f-%.2fi",p,r,p,r);
	}
	return 0;
}

用函数实现:

#include<stdio.h>
#include<math.h> 
int main()
{
	float a,b,c,m;
	float root1(float a,float b,float c);
	float root2(float a,float b,float c);
	float root3(float a,float b,float c);
	scanf("%f %f %f",&a,&b,&c);
	m=b*b-4*a*c;
	if(m>=0&&m<1e-6)
	{
	    root1(a,b,c);
	}
	else if(m>1e-6)
	{
		root2(a,b,c);
	}
	else if(m<0)
	{
		root3(a,b,c);
	}
	return 0;
}
float root1(float a,float b,float c)
{
	float x;
	x=-b/(2*a);
	printf("x=%.2f",x);
}
float root2(float a,float b,float c)
{
	float x1,x2,p,r,w;
	p=-b/(2*a);
	r=b*b-4*a*c;
	w=sqrt(r)/(2*a);
	x1=p+w;
	x2=p-w;
    printf("x1=%.2f x2=%.2f",x1,x2);
}
float root3(float a,float b,float c)
{
	float t,k,s;
	t=-(b*b)+4*a*c;
	k=sqrt(t)/(2*a);
	s=-b/(2*a);
	printf("x1=%.2f+%.2fi x2=%.2f-%.2fi",s,k,s,k);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值