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则输出错误结果!能不能解释一下为什么会这样???谢谢!! 展开
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则输出错误结果!能不能解释一下为什么会这样???谢谢!! 展开
4个回答
展开全部
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了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为整型和浮点型的存储方式不一样
更多追问追答
追问
为什么整型就计不准而浮点型就计得准!换成其他数据类型会怎样?
追答
那是因为h,s本来就是按浮点型存的,其他只有%lf是准的,其他也不准
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询