c语言中怎么输出小数呢?

#include<stdio.h>
#include<math.h>
main()
{ int a=1,b=2,t=1,j=0;
double i,sum;
i=0.0;
sum=0.0;
clrscr();
while(t<=20)
{ i=a/b;
sum=sum+i;
j=b;
b=a;
a=b+j;
t=t+1;
}

printf("sum=%f\ni=%f\n",sum,i);
printf("a=%d\nb=%d",a,b);
}

这个程序里面最后的a和b都没有错,就是sum和i怎么改输出的都是一个整数,而且最后影响到结果,重t=2开始,sum就开始不对了,输出不了小数部分,输出的时候直接只输出整数,可是定义的是小数呀?
自己想通了,原来定义的时候a和b也应该定义为double类型,因为i=a/b;而a和b两个整数相除在这个里面的结果他怎么都是一个整数,至于为什么,我也没搞懂。

帮你改了一个地方,加了注释,你看看:

#include<stdio.h>

#include<math.h>

main()

{ int a=1,b=2,t=1,j=0;

  double i,sum;

  i=0.0;

  sum=0.0;

  clrscr();

  while(t<=20)

  { i=(double)a/b;// 这里加个强制转换就OK了

    sum=sum+i;

    j=b;

    b=a;

    a=b+j;

    t=t+1;

  }

  printf("sum=%f\ni=%f\n",sum,i);

  printf("a=%d\nb=%d",a,b);

}


运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-16
float a=0.12;
printf("%f",a);
第2个回答  2015-06-30
%f就可以了呀
第3个回答  2013-03-13
从int那边直接用double代替应该可以
相似回答