编写的一个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);
版权声明:本文为博主原创文章,未经博主允许不得转载。