求救C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:59:04
帮我看一下,我自己编的程序错在哪里,为什么运行的结果不是我想象中的结果.

/*求一个二元一次方程的根*/
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,deatar,x1,x2,k;
deatar=b*b-4*a*c;
printf("请分别输入a,b,c的值,并分别回车:\n");
scanf("%d%d%d",&a,&b,&c);
if(deatar>=0)
{
k=sqrt(deatar);
x1=(-b+k)/(2*a);
x2=(-b-k)/(2*a);
printf("方程 %dx*x+%dx+%d=0 的根分别为:\n x1=%d\nx2=%d\n",a,b,c,x1,x2);
}
else
printf("因为b*b-4*a*c<0,所以方程 %dx*x+%dx+%d=0 没有解\n",a,b,c);

}

考虑到要进行开方,所以最好还是用float类型的变量,另外,在主函数末尾应该加上return 0;

最关键的是deatar=b*b-4*a*c; 这一句的位置不正确,应该放在scanf("%d%d%d",&a,&b,&c); 后面。

像这样:

#include<stdio.h>
#include<math.h>
int main(void)
{
float a,b,c,deatar,x1,x2,k;

printf("请分别输入a,b,c的值,并分别回车:\n");
scanf("%f%f%f",&a,&b,&c);
deatar=b*b-4*a*c;
if(deatar>=0)
{
k=sqrt(deatar);
x1=(-b+k)/(2*a);
x2=(-b-k)/(2*a);
printf("方程 %gx*x+%gx+%g=0 的根分别为:\n x1=%g\nx2=%g\n",a,b,c,x1,x2);
}
else
printf("因为b*b-4*a*c<0,所以方程 %gx*x+%gx+%g=0 没有解\n",a,b,c);
return 0;
}

#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,deatar,x1,x2,k;
printf("请分别输入a,b,c的值,并分别回车:\n");
scanf("%d%d%d",&a,&b,&c);
deatar=b*b-4*a*c;
if(deatar>=0)
{
k=sqrt(deatar);