zoukankan      html  css  js  c++  java
  • Openjudge-计算概论(A)-求一元二次方程的根

    描述:

    利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2 + bx + c =0的根,其中a不等于0。输入第一行是待解方程的数目n。 
    其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax2 + bx + c =0的系数。输出输出共有n行,每行是一个方程的根:
    若是两个实根,则输出:x1=...;x2 = ...
    若两个实根相等,则输出:x1=x2=...
    若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i

    所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
    x1和x2的顺序:x1的实部>Re的实部||(x1的实部==x2的实部&&x1的虚部>=x2的虚部)样例输入

    3
    1.0 3.0 1.0
    2.0 -4.0 2.0
    1.0 2.0 8.0
    

    样例输出

    x1=-0.38197;x2=-2.61803
    x1=x2=1.00000
    x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

    提示1、需要严格按照题目描述的顺序求解x1、x2。
    2、方程的根以及其它中间变量用double类型变量表示。
    3、函数sqrt()在头文件math.h中。
    4、要输出浮点数、双精度数小数点后5位数字,可以用下面这种形式: 

    printf("%.5f", num);

    注意,在使用Java做此题时,可能会出现x1或x2等于-0的情形,此时,需要把负号去掉来源2005~2006医学部计算概论期末考试

    本题是“基础编程练习1”这篇题里面最难的一个,解释起来很麻烦,这里就不解释了(PS:其实就是想偷懒......)

    代码如下:

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include <math.h>
     4 int main()
     5 {
     6     double a,b,c;
     7     double delta;
     8     int n;
     9     scanf("%d",&n);
    10     scanf("%lf",&a);
    11     while(n!=0)
    12     {
    13         scanf("%lf%lf",&b,&c);
    14         if(a<0)
    15         {
    16             a=-a;b=-b;c=-c;
    17         }        
    18         delta=b*b-4*a*c;
    19         if(delta==0)
    20         {
    21             printf("x1=x2=%.5lf
    ",-b/2/a);
    22         }
    23         else if(delta>0)
    24         {
    25             printf("x1=%.5lf;x2=%.5lf
    ",(-b+sqrt(delta))/2/a,(-b-sqrt(delta))/2/a);
    26         }
    27         else
    28         {
    29             if(b!=0)
    30             {
    31                 if(fabs(sqrt(-delta)/2/a-1)<=1e-6)
    32                     printf("x1=%.5lf+i;x2=%l.5f-i
    ",-b/2/a,-b/2/a);
    33                 else
    34                     printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi
    ",-b/2/a,sqrt(-delta)/2/a,-b/2/a,sqrt(-delta)/2/a);
    35             }
    36             else
    37                 printf("x1=%.5lfi;x2=-%.5lfi
    ",sqrt(-delta)/2/a,sqrt(-delta)/2/a);
    38         }
    39         printf("
    ");
    40         scanf("%lf",&a);
    41     }
    42 }
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/geek-007/p/4294518.html
Copyright © 2011-2022 走看看