解题思路与注意事项:


             1.建立三个子函数,分别对应b*b-4*a*c大于等于小于0三种情况

             2.注意控制格式,保留三位小数输出"%.3lf"

             3.math里面的sqrt()开平方函数,参数为正数。

              所以当b*b-4*a*c为负数时,应在参数前加负号已确认为正数



参考代码:

#include<stdio.h>
#include<math.h>
double q,p;
double fun1(double a,double b,double c,double s)
{
   p=-b/(2*a);
   q=(sqrt(s))/(2*a);
   printf("x1=%.3lf x2=%.3lf\n",p+q,p-q);
   return 0;
}
double fun2(double a,double b,double c)
{
   p=-b/(2*a);
   printf("x1=%.3lf x2=%.3lf\n",p,p);
   return 0;
}
double fun3(double a,double b,double c,double s)
{
   p=-b/(2*a);
   q=sqrt(-s)/(2*a);
   printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n",p,q,p,q);
   return 0;
}
int main()
{
   double a,b,c,s;
   scanf("%lf%lf%lf",&a,&b,&c);
   s=b*b-4*a*c;
   if(s>0)fun1(a,b,c,s);
   else if(s==0)fun2(a,b,c);
   else fun3(a,b,c,s);
   return 0;
}

感觉代码对你有用的话,留下你的赞赞吧(#^.^#)

点赞(2)
 

0.0分

23 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

丙夜 4年前 回复TA
#include<stdio.h>
#include<math.h>
int main()
{
	float a,b,c,delt,x1,x2;
	scanf("%f%f%f",&a,&b,&c);
	delt=b*b-4*a*c;
    if (delt==0) 
	{ 
	x1=(-b)/(2*a); 
	x1=(-b)/(2*a); 
	printf("x1=%f\n",x1); 
	} 
	if (delt>0) 
	{ 
	x1=(-b+sqrt(delt))/(2*a); 
	x2=(-b-sqrt(delt))/(2*a); 
	printf("x1=%f,x2=%f\n",x1,x2);
	}
	return 0;
}
求问大佬,哪里错了
Cccc 5年前 回复TA
@Cccc 各位大神看看这个哪儿出错了
Cccc 5年前 回复TA
#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);
}
LP 5年前 回复TA
@LP x11,x22是虚部,另外我知道问题在哪里了,谢谢你
一阳花开 5年前 回复TA
@LP x11x22?
LP 5年前 回复TA
为什么我不能写的不正确,虚数i感觉没什么不一样啊
大神看看哪里错了
#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c,m;
	double x1,x2;
	scanf("%d%d%d",&a,&b,&c);
	m=b*b-4*a*c;
	if(m>=0)
	{
		x1=(-b+sqrt(m))/(2.0*a);
		x2=(-b-sqrt(m))/(2.0*a);
		printf("x1=%.3lf x2=%.3lf",x1,x2); 
	}
	else
	{
		m=-m;
		x1=(-b)/(2.0*a);
		double x11=sqrt(m)/(2.0*a);
		x2=(-b)/(2.0*a);
		double x22=sqrt(m)/(-2.0*a);
		printf("x1=%.3lf+%.3lfi x2=%.3lf+%.3lfi",x1,x11,x2,x22);
	}
	
	return 0;
}