3、if 语句的嵌套-项目3-一元二次方程全解
1. 任务描述
有一方程ax^2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。
(1) a=0,b≠0时, 解为-c/b
(2) a=0,b=0,c=0, 解为任意值
(3) a=0,b=0,c≠0, 无解
(4) a≠0,b^2-4ac≥0, 有两个实根
(5) a≠0,b^2-4ac≤0, 有两个虚根
2. 程序流程图
3. 代码实现
/*
*Copyright(c)2019,[email protected]
*All rights reserved.
*文件名称:answers_of_function_1.cpp
*作 者:马娅芳
*完成日期:2019.1.10
*版 本 号: v2.0
*问题描述:有一方程ax^2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。
(1) a=0,b≠0时, 解为-c/b
(2) a=0,b=0,c=0, 解为任意值
(3) a=0,b=0,c≠0, 无解
(4) a≠0,b^2-4ac≥0, 有两个实根
(5) a≠0,b^2-4ac≤0, 有两个虚根
*程序输入:一元二次方程的系数 a, b, c
*程序输出:方程根的情况
*/
#include <stdio.h>
#include <math.h>
int main(){
double a, b, c, x1, x2;
double delta; //如果在这里直接写 delta = b*b - 4*a*c, 系统默认将其初始化为 0
//则在调试时无论 a,b,c为何值,delta都为 0
printf("输入一元二次方程的系数:");
scanf("%lf%lf%lf",&a, &b, &c);
delta = b*b - 4*a*c;
printf("delta= %f\n", delta);
if(a == 0)
{
if(b == 0)
{
if(c == 0)
{
printf("方程的解为任意值。");
}
else
{
printf("方程无解。");
}
}
else
{
x1 = x2 = -c/b;
printf("%.2f", x1);
}
}
else
{
if(delta >= 0)
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("%.2f\t%.2f", x1, x2);
}
else
{
printf("方程有2个虚根。");
}
}
return 0;
}
4. 运行结果
(1) a=0,b≠0时, 解为-c/b
(2)a=0,b=0,c=0, 解为任意值
(3)a=0,b=0,c≠0, 无解
(4)a≠0,b^2-4ac≥0, 有两个实根
(5) a≠0,b^2-4ac≤0, 有两个虚根
5. 心得
流程图是写代码的好帮手。