C语言实型与整型转换问题(很急啊)

来源:百度知道 编辑:UC知道 时间:2024/06/27 06:10:57
(C语言)设变量y为flloat类型,x为int 类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式 。
A) y = ( y * 100 + 0.5) / 100.0 B) x = y * 100 +0.5 , y = x / 100.0
C) y = y * 100 + 0.5 / 100.0 D) y = ( y / 100 + 0.5 ) * 100.0

B) x = y * 100 +0.5 , y = x / 100.0

比如: y=3.1415926 则
x = y * 100 + 0.5
y * 100 结果为 314.15
再+0.5 结果为 314.65 赋值给 int 类型的 x 则 x = 314;
然后:y = 3.14;

如果: y = 6.21854 则
x = y * 100 + 0.5
y * 100 结果为621.854
再 + 0.5 结果为 622.354 赋值给 int 类型的 x 则 x = 622;
然后: y = 6.22

选B

x = y * 100 +0.5
运算结果自动类型转换为int.
自动类型转换时,把小数部分忽略了.
所以x保留了y的两位小数.

y = x / 100.0
x自动类型转换为float.

强制类型转换
float a
int p
p=int(a)

p不就是a转换整型数据吗
反之亦然