要实现将一个输入的十进制正整数转化为二进制表示,下面横线上应填入的代码为( )。
#include <iostream>
using namespace std;
stack<int> ten2bin(int n) {
stack<int> st;
int r, m;
r = n % 2;
m = n / 2;
st.push(r);
while (m != 1) {
r = m % 2;
st.push(r);
m = m / 2;
}
st.push(m);
return st;
}
int main() {
int n;
cin >> n;
stack<int> bin;
bin = ten2bin(n);
while (!bin.empty()) {
__________________ // 在此处填入代码
}
return 0;
}进制转换:任意进制→十进制用按权展开;十进制→任意进制用除基取余法。注意十六进制中A-F表示10-15。
进制转换中注意十六进制的A-F表示10-15。二进制转八进制三位一组,转十六进制四位一组。
【考点】stack ADT|LIFO特性|十进制转二进制算法
本题考查 GESP 六级「C++ 语言基础」中容器 ADT 操作,核心卡住的是考生对栈「后进先出」特性的理解深度——六级不再考简单排序,而是要求掌握容器语义与输出顺序的匹配。