解题思路:本质就是对函数的运用

注意事项:公式别写错

QQ截图20201229204146.png
参考代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void dayu(double a, double b, double c);
void xiaoyu(double a, double b,double c);
void dengyu(double a, double b);
int main(void)
 {
	double a, b, c;
	scanf("%lf %lf %lf", &a, &b, &c);
	if (b * b - 4 * a * c > 0)
		dayu(a, b, c);
	if (b * b - 4 * a * c < 0)
		xiaoyu(a,b,c);
	if (b * b - 4 * a * c == 0)
		dengyu(a, b);
	return 0;
}
void dayu(double a, double b, double c) {
	double x1, x2;
	x1 = (pow((-b + (b * b - 4 * a * c)),(1.0 / 2))) / 2 * a; 
	x2 = (pow((-b - (b * b - 4 * a * c)), (1.0 / 2))) / 2 * a;
	printf("x1=%lf x2=%lf", x1, x2);
}
void xiaoyu(double a , double b,double c) {
	printf("x1=%.3lf+%.3lfi ", -b / (2 * a), sqrt(4 * a * c - b*b) / (2 * a)); //x=(-b± i√(4ac-b²))/(2a)
	printf("x2=%.3lf-%.3lfi", -b / (2 * a), sqrt(4 * a * c - b*b) / (2 * a));
}
void dengyu(double a, double b) { 
	double x1, x2;
	x1 = -b / (2 * a);
	x2 = x1;
	printf("x1=%.3lf x2=%.3lf", x1, x2);
}


点赞(0)
 

0.0分

5 人评分

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

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

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

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

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

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

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

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

评论列表 共有 7 条评论

ShiSan 2年前 回复TA
@詹鸿培 程序要求保留三位小数
缪之伤痛 3年前 回复TA
x1 = (-b+pow((b * b - 4 * a * c),(1.0 / 2))) / 2 * a;    //x1 =(-b+(b*b-4ac)^(1/2))/2a;
x2 = (-b-pow((b * b - 4 * a * c), (1.0 / 2))) / 2 * a;     //x2 =(-b-(b*b-4ac)^(1/2))/2a;
我就想知道为啥不是我这个样子; (^ .. ^)
扣脚的菜鸟 3年前 回复TA
@孤独时代的乌托邦 我查了一下 pow(x,y)//求x的y次方,可是 b^2-4ac>0 的公式好像不是pow((-b + (b * b - 4 * a * c)),(1.0 / 2))这个,为什么?
卷心菜 3年前 回复TA
@詹鸿培 同问
tqtql 3年前 回复TA
#include<stdio.h>
#include<math.h>
void fun1(float a,float b,float c)
{
    double s;
    s=sqrt(b*b-4*a*c);
    printf("x1=%.3f x2=%.3f",(-b+s)/2/a,(-b-s)/2/a);
}
void fun2(float a,float b,float c)
{
    fun1(a,b,c);
}
void fun3(float a,float b,float c)
{
    double s;
    s=sqrt(4*a*c-b*b);
    printf("x1=%.3f+%.3fi x2=%.3f-%.3fi",-b/a/2,s/2/a,-b/a/2,s/2/a);
}
int main()
{
    float a,b,c;
    scanf("%f%f%f",&a,&b,&c);
    if(b*b-4*a*c>0)fun1(a,b,c);
    else if(b*b-4*a*c==0)fun2(a,b,c);
    else fun3(a,b,c);
    return 0;
}//比较傻的方法
孤独时代的乌托邦 3年前 回复TA
请问x1 = (pow((-b + (b * b - 4 * a * c)),(1.0 / 2))) / 2 * a; 中(1.0 / 2)是为什么
詹鸿培 3年前 回复TA
为啥有些点3有些不点3
麻烦指导一下谢谢