辞树 发表于 2021-11-25 19:37:02

,找错 求一元二次方程ax^2+bx+c=0的根。

输入多行a,b,c的值,分别输出每一行的解

#include<stdio.h>
#include<math.h>
void fun(int a[] ,int n)
{

   float p;
   for(int i=0;i<n;i++)
   {   int a1,b,c;
       a1=a;b=a;c=a;
       p=(float)b*b-4*a1*c;                         //一元二次方程方程的判别式
       printf("%d,%d,%d,%.3f   ",a1,b,c,p);
         if(p=0)                                  //从这开始是判别式的三个情况
         printf("x1=x2=%.3f\n",(-b)/2.0*a1);
             else if(p>0)
                       printf("x1=%.3fx2=%.3f\n",((-b)+sqrt(p))/(4.0*a1),((-b)+sqrt(p))/(4.0*a1));
                           else
                             printf("x1=%.3f+(%.3fi)x2=%.3f-(%.3fi)\n",-b/(2.0*a1),sqrt(-p)/(2*a1),-b/(2.0*a1),sqrt(-p)/(2*a1));            
   }
}

main()
{
int a,n,i,j;
printf("所需的行数:");   
scanf("%d",&n);             //输入多少行
for(i=0;i<n;i++)
    for(j=0;j<3;j++)
       scanf("%d",&a);   //输入数组
       fun(a,n);
}




结果所需的行数:1
1 4 4
1,4,4,0.000   x1=-2.000+(-0.000i)x2=-2.000-(-0.000i)

为什么p的值没有呀,大佬们

hujiamiao1990 发表于 2021-11-25 19:52:48


a=1,a=4,a=4
a1=a;b=a;c=a
a1=1,b=4,c=4

p=(float)b*b-4*a1*c;      
p=4*4-4*1*4
p=16-16

辞树 发表于 2021-11-25 19:58:16

hujiamiao1990 发表于 2021-11-25 19:52
a=1,a=4,a=4
a1=a;b=a;c=a
a1=1,b=4,c=4


抱歉,我个傻得,那为什么,它循环语句一下子跳到else呀,直接输出虚数根呀

hujiamiao1990 发表于 2021-11-25 20:10:31

if(p=0)      if(p==0)

辞树 发表于 2021-11-25 20:17:41

hujiamiao1990 发表于 2021-11-25 20:10
if(p=0)      if(p==0)

非常感谢您为我这个非常憨的错误花时间!
页: [1]
查看完整版本: ,找错 求一元二次方程ax^2+bx+c=0的根。