项目24.3 一元二次方程全解

来源:互联网 发布:远程教育软件k6 编辑:程序博客网 时间:2024/05/22 03:18
任务和代码: 有一方程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, 有两个虚根


/*文件名:main.c作者:小风景完成日期:2015.9.11问题描述:  有一方程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, 有两个虚根程序输出:方程的解*/#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){    float a,b,c,k1,k2,k3;    printf("请输入a,b,c:");    scanf("%f %f %f",&a,&b,&c);    k3 = b * b - 4 * a *c;    if(a == 0)    {        if(b != 0)        {            printf("方程有一解为:%.3f",-c / b);        }        else if(c != 0)        {            printf("该方程无解!");        }        else        {            printf("该方程解为任意值!");        }    }    else    {        if(k3 >= 0)        {            k1 = -b / (2 * a);            k2 = sqrt(k3) / (2 * a);            printf("该方程的解x1=%.3f\n",k1+k2);            printf("该方程的解x2=%.3f\n",k1-k2);        }        else        {            k1 = -b / (2 * a);            k2 = sqrt(-k3) / (2 * a);            printf("该方程的解x1=%.3f+%.3fi\n",k1,k2);            printf("该方程的解x2=%.3f+%.3fi\n",k1,k2);        }    }    return 0;}


运行结果:


总结:这个程序重点在简洁的if语句,前面a == 0,b!=0 c==0 三个判断比较简洁的得到想要的结果,后面输出虚根是注意输出的方式,由于虚根带i,所以在输出时应该输出带i的表达式,这点需要注意。

---------------------------------------------------------------------------------------------------------------------------------------

让时间说真话,虽然我也害怕。

0 0