#include <stdio.h>
int main()
#define HIGHT 100
{
double i=1,s=0,h;
h=HIGHT;
while (i<=10)
{i++;
s=s+2*h;
h=h/2;
}
s=s-HIGHT;
printf("第十次反弹高度:%f\n共经过%f米\n",h,s);
return 0;
}
这个程序中,如果把%f换成%d为什么输出的结果不同。%f输出正确结果而用%d则输出错误结果!能不能解释一下为什么会这样???谢谢!!
用int申请时,一样错
追答h变为int,输出应该是0了,那就没问题了啊,当h小于2的时候,h/2就变为0了。
本回答被提问者和网友采纳好像用int申请一样错误
追答你是没有理解到计算机的数据的储存方式,C基础还有待提高呀。要不你就不会再追问我这个问题啦。如果int, h = 1时。h/2 == 0
为什么整型就计不准而浮点型就计得准!换成其他数据类型会怎样?
追答那是因为h,s本来就是按浮点型存的,其他只有%lf是准的,其他也不准
追问用int声明h.s然后用%d一样不对?怎么回事?
追答h=h/2,h是int类型时,商会去掉小数部分