永发信息网

C语言题目(一元二次方程的求解)

答案:2  悬赏:50  手机版
解决时间 2021-05-11 02:42
  • 提问者网友:雾里闻花香
  • 2021-05-10 23:24

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c;
double x1,x2,m,n,t;
scanf("%d%d%d",&a,&b,&c);
if (a==0)
{if (b==0) printf("Input error!\n");
else if (b!=0)
printf("x=%.6lf\n",-c/b);}
if (a!=0) t=b*b-4*a*c;
{if (t=0)
printf("x1=x2=%.6lf\n",-b/(2*a));
if (t>0)
x1=(-b+sqrt(t))/(2*a)
x2=(-b-sqrt(t))/(2*a)
printf("x1=%.6lf\n",x1);
printf("x2=%.6lf\n",x2);
if (t<0)
m=-b/(2*a);n=sqrt(t)/(2*a);
printf("x1=%.6lf+%.6lfi\n",m,n);
printf("x1=%.6lf-%.6lfi\n",m,n);}
}

这个程序哪里出现的错误,为什么总是通不过呢?

最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-05-10 23:50
if (t=0) 改成if(t==0)
用在if语句里,应该用比较,也就是用关系运算符,而不是赋值
t=0是赋值运算,t==0是比较t和0的值


x1=(-b+sqrt(t))/(2*a)
x2=(-b-sqrt(t))/(2*a)
这两条语句后面没有语句结束符,也就是分号

C语言的每条语句后面必须要有语句结束符,结束符是分号

全部回答
  • 1楼网友:撞了怀
  • 2021-05-11 00:00

我稍微改了下。。。你试一下吧。。。

#include<stdio.h> #include<math.h> void main(){ float a,b,c,m,n; float x,x1,x2,t; printf("please input the number:\n"); scanf("%f%f%f",&a,&b,&c); if (a==0){ if (b==0) printf("Input error!\n"); if (b!=0) printf("x=%.6lf\n",-c/b); } if (a!=0) { t=b*b-4*a*c; //printf("t=%f\n",t); if (t==0){ printf("x1=x2=%.6lf\n",-b/(2*a)); } if (t>0){ x1=(-b+sqrt(t))/(2*a); x2=(-b-sqrt(t))/(2*a); printf("x1=%.6lf\n",x1); printf("x2=%.6lf\n",x2); } if (t<0){ m=-b/(2*a);n=sqrt(-t)/(2*a); printf("x1=%.6lf+%.6lfi\n",m,n); printf("x1=%.6lf-%.6lfi\n",m,n); } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯