首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数据类型(生手)

2012-07-31 
数据类型(新手)各位大大,我是一个初学者,有个问题让我很头疼:运行环境:32位winxp,vc++6.0,一个解一元二次

数据类型(新手)
各位大大,我是一个初学者,有个问题让我很头疼:
运行环境: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);
}
输出就正常了。为啥

[解决办法]
double 类型输入的时候使用lf,如:scanf("lf",&a);
[解决办法]
double类型在scanf时用%lf
scanf函数是通过指针指向变量的。%f告诉scanf函数在所传地址位置上存储一个float型值,而%lf告诉scanf函数在所传地址位置上存储一个double型值。这里float和double的区别是非常重用的。如果给出了错误的转换说明,那么scanf函数将可能存储错误的字节数量(没有提到的是,float型的为模式可能不同于double型的位模式)。
http://apps.hi.baidu.com/share/detail/16859628

热点排行
Bad Request.