选择题 16.  设有定义“double x=5.16894;”,则语句“printf("%1f\n",(int)(x*1000+0.5)/1000.0);”的输出结果是______。
【正确答案】 A
【答案解析】 (x*1000+0.5)表示x向右移动3位小数,加0.5,也就是小数第4位加5,若这位大于等于5,则进1到个位。因为5.16894×1000+0.5=5169.44,所以(int)(x*1000+0.5)强制转换为整型结果为5169。5169÷1000.0=5.169,由于1000.0结果自动转换为浮点数,所以printf("%lf\n",5.169)结果是5.16900。故答案为选项A。