注解
1、模拟IEEE 754的格式。注意必须用float表示单精度型,如果用double表示的是双精度,结果就不对了!
2、这个题测试案例不够丰富。未考虑到纯小数的情况。
代码
#include <iostream>
using namespace std;
int main() {
float f;
while(scanf("%f", &f)!=EOF) {
int cnt = 0;
while(f>2.0 || f<-2.0) {
f /= 2.0;
cnt++;
}
printf("%d %.6lf\n", cnt, f);
}
return 0;
}
结果