下列代码将十进制转化成八进制,则横线上应填入( )。
#include <iostream>
using namespace std;
void decimal2octal(int decimal) {
int oct_number[100];
int i = 0;
while (decimal > 0) {
________________________ // 在此处填入代码
}
for (int j = i - 1; j >= 0; j--) {
cout << oct_number[j];
}
cout << endl;
}答案C。进制转换要熟练掌握各进制间的转换方法。注意0xf=15(十六进制),015是八进制(十进制13),两者不等。
二进制小数转十进制:小数点后第一位是2⁻¹=0.5,第二位是2⁻²=0.25。容易忽略负幂次。
【考点】进制转换|循环控制|数组操作
本题考查 GESP 三级 C++ 模块的进制转换核心算法。命题人卡住的是"除基取余法"的细节理解——多数考生会背"取余得位,除基移数"的口诀,但一到代码实现就分不清操作顺序和数组下标递增时机,导致要么只存最后一位,要么存反了整个序列。