瞎折腾


私信TA

用户名:chenbin

访问量:62819

签 名:

等  级
排  名 74
经  验 9927
参赛次数 0
文章发表 74
年  龄 0
在职情况 学生
学  校 中南大学
专  业

  自我简介:

解题思路:

                        求根公式的使用




注意事项:

1).考虑到要写四个函数,且每个函数都有近乎相同的变量值,所以不妨在设一组double型的全局变量—double a,b,c,p,q;;既然是double数据类型,则输入输出格式都要是"%lf",同时也要指定题目输出时小数点的保留位数!

2).题目要求是在主函数输入三个数值,且要考虑这三个数据作为实参传递给被调用函数的形参的数据类型要一致;

3).解题需要用到开方,则需调用#include<math.h>包

4).对于求解一元二次方程,由△=b^2-4ac就有三种不同取值情况,则被调用函数的也就有三种,不要将△=b^2-4ac和△>b^2-4ac合并。

5).注意当△=b^2-4ac<0时,sqrt(△)=sqrt(4ac-b^2)






参考代码:

#include<stdio.h>

#include<math.h>

double a,b,c,p,q;

int shiroot(double a,double b,double c)

{

p=-b/(2*a);

q=(sqrt(b*b-4*a*c))/(2*a);

printf("x1=%.3lf x2=%.3lf\n",p+q,p-q);

return 0;

}

int equal(double a,double b,double c)

{

p=-b/(2*a);

printf("x1=%.3lf x2=%.3lf\n",p,p);

return 0;

}

int xuroot(double a,double b,double c)

{

p=-b/(2*a);

q=(sqrt(4*a*c-b*b))/(2*a);

printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n",p,q,p,q);

return 0;

}

int main()

{

scanf("%lf%lf%lf",&a,&b,&c);

if((b*b-4*a*c)>0)

{

shiroot(a,b,c);

}

else if((b*b-4*a*c)==0)

{

equal(a,b,c);

}

else

xuroot(a,b,c);

return 0;

}


 

0.0分

12 人评分

  评论区

#include<stdio.h>
#include<math.h>
double a,b,c,p,q;
int solve(double a,double b,double c)
{
    if((b*b-4*a*c)>0)
    {
        p=-b/(2*a);
        q=(sqrt(b*b-4*a*c))/(2*a);
        printf("x1=%.3lf x2=%.3lf\n",p+q,p-q);
    }
    else if((b*b-4*a*c)==0)
    {
        p=-b/(2*a);
        printf("x1=%.3lf x2=%.3lf\n",p,p);
    }
    else if((b*b-4*a*c)<0)
    {
        p=-b/(2*a);
        q=(sqrt(4*a*c-b*b))/(2*a);
        printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",p,q,p,q);
    }
}
int main()
{
    scanf("%ld %lf %lf",&a,&b,&c);
    solve(a,b,c);
}
2019-12-03 20:17:57
你的能打印得共轭
复根?
2019-10-15 20:39:12
能否一看我那块不对 ;  测试没问题  提交就。。。


#include <stdio.h>
#include <math.h>
int main(void)
{
	int  flag = 0; 
	double x1, x2, a, b, c, d;; 
	scanf("%lf%lf%lf", &a, &b, &c);
	d = b*b - 4*a*c;
	if(d > 0)
	{
		x1 = (-b + sqrt(d)) / (2*a);
		x2 = (-b - sqrt(d)) / (2*a);
	}
	else if(fabs(d) < 10e-6)
	{
		x1 = x2 = -b / 2.0/a;
	}
	else
	{
		flag = 1;
	}
	if(!flag)
	{
		printf("x1=%.3lf x2=%.3lf\n", x1, x2);
	}
	else
	{
		printf("x1=-%.3lf+%.3lfi", b/(2*a), sqrt(-d)/(2*a));
		printf(" x1=-%.3lf-%.3lfi\n", b/(2*a), sqrt(-d)/(2*a));
	}
    return 0;
}
2018-10-31 14:43:21
函数返回可以是0吗?不应该是返回x1和x2吗?
2018-04-11 20:14:04
  • «
  • 1
  • »