2道C语言题目~

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:07:07
1、main()
{ double d=3.2;
int x,y;
x=1.2;
y=(x+3.8)/5.0 ;
printf("%f\n",d*y) }
答案是输出 0 为什么呢? X是整形定义为1.2 结果怎么变呢?

2、若定义k为float 这个类型应该有6位小数,但是有的程序输出结果是 12.0为什么不是12.000000?

main()
{ double d=3.2;
int x,y;
x=1.2;
y=(x+3.8)/5.0 ;
printf("%f\n",d*y) }
x是int型,赋予x值1.2只会被取整数部分,所以x的实际值为1;y=(x+3.8)/5.0=(1+3.8)/5.0=4.8/5.0=0.96,根据C语言“向零取整”的原则,y值为0;这时d*y=3.2*0=0!
第二个问题应该是应为不同的C编译系统的规范不太一样,一般%f是保留6位小数的,建议你用TC++3.0试试,或者有%m.nf的方法!

#include <iostream.h>
int main()
{ double d=3.2;
int x,y;
x=1.2;//x是int型,其实是1
y=(x+3.8)/5.0 ; //y其实是(1+3.8)/5.0=0, 4.8整除于5/0,就是4.8里面有几个5.0 ,当然一个都没有
printf("%f\n",d*y) } //d不管多少*0都是0
//答案是输出 0

float a=12.0001e0;

第一题,答案确实输出是0。
首先,x、y均定义为int整型变量,所以在执行到y=(x+3.8)/5.0 ; 时,其实是这样的y=(1+3.8)/5.0,也就是y=4.8/5.8,所以y的值应该是0,输出d*y的值自然也是0了。
把整型的x定义成1.2,其实还是1。
第二题
你可以把输出语句写成printf(“%6.0f”,k);你看看这样输出就是12.000000了

一.float型变量可以储存带小数点的值,int型变量只能储存整数值,对赋予它的小数点后面部分无条件舍去。
因此对于x = 1.2,x实际的值是1。
y=(x+3.8)/5.0,实际是y=4.8/5=0.96,去掉小数点后面的,y实际值是1。
因此d*f=0,输出结果为0。
二.printf("%f",d*y);<