您的位置:首页 > 其它

用C求解一元二次方程的解,遇到的问题及解决办法

2012-03-13 00:26 267 查看
编写的一个C语言程序,求解一元二次方程,遇到了很多问题

#include <stdio.h>
#include <math.h>

int main ()
{
int a=3;
int b=4;
int c=5;
printf("请输入二次方系数");
scanf("%d",&a);
printf("请输入一次方系数");
scanf("%d",&b);
printf("请输入常数项系数");
scanf("%d",&c);

double delt;
double X1;
double X2;

delt=b*b-4*a*c;

if(delt>0)
{
X1=((-b)+sqrt(delt))/2a;
X2=((-b)-sqrt(delt))/2a;
printf("一元二次方程的根是X1=%f,X2=%f\n",X1,X2);
}
if(delt=0)
{
X1=(-b)/2a;
X2=X1;
printf("一元二次方程有两个相等的根X1=X2=%f\n",X1);
}
if(delt<0)
{
printf("一元二次方程无解\n");
}
return 0;
}

编译的时候DEV C++报错的的情况如下:



修改过以后的代码,运行正常

#include <stdio.h>
#include <math.h>

int main ()
{
float a;
float b;
float c;

printf("请输入一元二次方程的系数");
scanf("a=%f,b=%f,c=%f",&a,&b,&c);

double delt;
double X1;
double X2;

delt=b*b-4*a*c;

if(delt>0)
{
X1=((-b)+sqrt(delt))/(2*a);
X2=((-b)-sqrt(delt))/(2*a);
printf("一元二次方程的根是X1=%f,X2=%f\n",X1,X2);
}
if(delt=0)
{
X1=(-b)/(2*a);
X2=X1;
printf("一元二次方程有两个相等的根X1=X2=%f\n",X1);
}
if(delt<0)
{
printf("一元二次方程无解\n");
}

system("pause");
return 0;
}


总结:

1)在最后的returne 0; 和主程序之间加一个system("pause");或者getchar();可以看到程序的运行结果,知道,在键盘上任意输入一个字符;

2)在C语言程序设计中如果是乘法不应该省略“*”,在任何情况下都应该使用“*”来表示乘法;

3)scanf("a=%f,b=%f,c=%f",&a,&b,&c);中&a指a在内存中的地址;按照a,b,c在内存中的地址将a,b,c的值存进去,变量a,b,c的地址是在编译连接阶段分配的;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: