用C求解一元二次方程的解,遇到的问题及解决办法 分类: C语言 20120313 00:26 3094人阅读 评论(0) 收藏

编写的一个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);

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/yisuowushinian/p/4715668.html