Edinburge 发表于 2017-2-27 13:00:36

P,q的问题

#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
        float a,b,c,disc,x1,x2,p,q;
        scanf("%f,%f,%f",&a,&b,&c);
        disc=b*b-4*a*c;
       
        printf("*******the result *******\n");
        if(disc>=0)
        {
                x1=(-b+sqrt(disc))/(2*a);
                x2=(-b-sqrt(disc))/(2*a);
                printf("x1=%6.2f,x2=%6.2f\n",x1,x2);
        }
        else
        {
                p=-b/(2*a);
                q=sqrt(fabs(disc))/2*a;
                printf("x1=%6.2f+%6.2f i\n",p,q);
                printf("x2=%6.2f-%6.2f i\n",p,q);
        }
}
在程序中p,q是如何得来的呢?
以及printf("x1= i\n",p,q);
                printf("x2=%6.2f-%6.2f i\n",p,q);
这条语句中为什么会有i,为什么会有%6.2f+%6.2f这种输出方式呢?
求大神知道啊!!

LangRenKun 发表于 2017-2-27 15:36:58

i的问题我不是很了解。后面那个意思是这个float变量的长度为6,其中小数占2个。例子1234.56。整数四位小数两位一共六位

caokaifa 发表于 2017-2-27 17:33:36

这个程序是方程根,
else
      {
                p=-b/(2*a);
                q=sqrt(fabs(disc))/2*a;
                printf("x1=%6.2f+%6.2f i\n",p,q);
                printf("x2=%6.2f-%6.2f i\n",p,q);
      }
}
这部分是当disc小于零时是复数形式的根,假设disc=-9,开方就是-3i,3i,所以当小于零时加 i,p是表示实数部分 而q表示虚部虚部有两个不同的值printf("x1=%6.2f+%6.2lf i\n",p,q);
    printf("x2=%6.2lf-%6.2lf i\n",p,q);

kai759630 发表于 2017-2-28 17:07:07

这是初中数学问题吧,i表示虚部,△<0就表示没有实根,只能用虚数表示了
页: [1]
查看完整版本: P,q的问题