回 帖 发 新 帖 刷新版面

主题:(新手)数据类型

各位大大,我是一个初学者,有个问题让我很头疼:
运行环境:32位winxp,vc++6.0,一个解一元二次方程的程序
代码如下:
#include<stdio.h>
#include<math.h>


void main(void)
{
    double a=0;
    double b=0;
    double c=0;
    double delta=0;
    double x1=0;
    double x2=0;


    scanf("%f",&a);
    scanf("%f",&b);
    scanf("%f",&c);


    delta=b*b-4*a*c;
    
    x1=(-b+sqrt(delta))/2/a;
    x2=(-b-sqrt(delta))/2/a;

    printf("%.2f   %.2f\n",x1,x2);
}

但无论输入的系数是多少,输出值都是-0.51  -0.51。
后来我把代码改成如下:
#include<stdio.h>
#include<math.h>


void main(void)
{
    float a=0;
    float b=0;
    float c=0;
    float delta=0;
    float x1=0;
    float x2=0;


    scanf("%f",&a);
    scanf("%f",&b);
    scanf("%f",&c);


    delta=b*b-4*a*c;
    
    x1=(-b+sqrt(delta))/2/a;
    x2=(-b-sqrt(delta))/2/a;

    printf("%.2f   %.2f\n",x1,x2);
}
输出就正常了。为啥?

回复列表 (共2个回复)

沙发

高手快帮帮忙啊

板凳


输出double类型数据要用%lf

我来回复

您尚未登录,请登录后再回复。点此登录或注册