解题思路:
求根公式的使用
注意事项:
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分
9 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
@Cccc 这个哪里错了呢
@阿鹏 return只能返回一个值 x1和x2应该靠全局变量返回
@咖啡 最后小于零那个,第二个printf里应该是x2 不是x1
@咖啡 看不懂,,
@阿鹏 调用函数时已经输出答案了,不需要返回值。