,找错 求一元二次方程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的值没有呀,大佬们
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 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呀,直接输出虚数根呀
if(p=0) if(p==0) hujiamiao1990 发表于 2021-11-25 20:10
if(p=0) if(p==0)
非常感谢您为我这个非常憨的错误花时间!
页:
[1]