1432 - C语言-解方程

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。

题目输入

a b c

题目输出

x1=? x2=?

输入/输出样例

输入格式

4 1 1

输出格式

x1=-0.125+0.484i x2=-0.125-0.484i

C语言解答

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c;
	double disc,x1,x2,p,q,realpart,imagpart;
	scanf("%d %d %d",&a,&b,&c);
	disc=b*b-4*a*c;
	if(a==0)
		printf("not a quadratic\n");
	if(a!=0)
	{{
		p=-b/(2.0*a);
		q=sqrt(disc)/(2.0*a);
		x1=p+q;
		x2=p-q;
	}
		if(disc==0)
		printf("x1=%.3lf x2=%.3lf\n",x1,x2);
		if(disc>0)
			printf("x1=%.3lf x2=%.3lf\n",x1,x2);
	if(disc<0)
	{
	        realpart=-b/(2.0*a);
            imagpart=sqrt(-disc)/(2*a);
            printf("x1=%.3f+%.3fi x2=%.3lf-%.3lfi\n",realpart,imagpart,realpart,imagpart);
	}}
	return 0;
	}

C++解答

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
double disc,x1,x2,p,q;
void big(int a,int b)	//>0
{
	x1=(-b+sqrt(disc))/(2.0*a);
	x2=(-b-sqrt(disc))/(2.0*a);
}
void small(int a,int b)	//<0
{
	p=-1.0*b/(2*a);
	q=sqrt(-disc)/(2*a);
}
void equal(int a,int b)	//==0
{
	x1=x2=-1.0*b/(2*a);
}
int main()
{
	int a,b,c;
	cin>>a>>b>>c;
	disc=b*b-4*a*c;
	if (disc>0)
	{
		big(a,b);
		printf("x1=%.3lf x2=%.3lf\n",x1,x2);
	}
	else if (disc==0)
	{
		equal(a,b);
		printf("x1=x2=%.3lf\n",x1);
	}
	else
	{
		small(a,b);
		printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n",p,q,p,q);
	}
	return 0;
}