c语言问题!关于printf函数输出格式的!

#include<stdio.h>intmain()#defineHIGHT100{doublei=1,s=0,h;h=HIGHT;while(i<=10){i++;s=... #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则输出错误结果!能不能解释一下为什么会这样???谢谢!!
展开
 我来答
kaiyi_1210
2014-12-28 · TA获得超过216个赞
知道小有建树答主
回答量:204
采纳率:53%
帮助的人:82.3万
展开全部
double i=1,s=0,h;这句代码里面,h定义的是double类型的,所以,h在后面的运算和赋值,都是double类型的,%f是浮点数的输出格式,%f输出的时候是按照double的输出,%d,用来输出十进制整数,这里不能把double作为十进制输出,C语言是强语言,不会做自动转换。
追问
用int申请时,一样错
追答
h变为int,输出应该是0了,那就没问题了啊,当h小于2的时候,h/2就变为0了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在武昌湖记笔记的公孙瓒
2014-12-28 · 超过32用户采纳过TA的回答
知道答主
回答量:132
采纳率:100%
帮助的人:76.6万
展开全部
%f, %d对于计算机来说,根本就不认识,计算机存储是按二进制,%f,%lf才会按照浮点数的存储方式去取出需要打印的输,而%d和其他格式则是按照其他的相应方式去取,所用%d格式去取浮点数,一般都是错误的
追问
好像用int申请一样错误
追答
你是没有理解到计算机的数据的储存方式,C基础还有待提高呀。要不你就不会再追问我这个问题啦。如果int, h = 1时。h/2 == 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-28
展开全部
double i=1,s=0,h;
声明声明类型的变量,就要用什么类型的格式符;
int %d
long %ld
float %f
double %lf
char %c
char% %s
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友38e7e4d
2014-12-27 · TA获得超过296个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:182万
展开全部
因为整型和浮点型的存储方式不一样
更多追问追答
追问
为什么整型就计不准而浮点型就计得准!换成其他数据类型会怎样?
追答
那是因为h,s本来就是按浮点型存的,其他只有%lf是准的,其他也不准
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式