若想要实现十进制转其他进制,只需要将%8,/8替换为相应的数,例如十进制转十六进制,则改为%16,/16。
#include<stdio.h>
#include<stack>
using namespace std;
stack<int> Conversions(int num){
if(num<=0){
printf("num is error\n");
}
stack<int>stk;
//8--->10
//10-->12
while(num){
stk.push(num%8);
num/=8;
}
return stk;
}
int main(){
int num;
while(cin>>num){
stack<int>stk=Conversions(num);
while(!stk.empty()){
printf("%d",stk.top());
stk.pop();
}
printf("\n");
}
return 0;
}
这里之所以使用栈stack,是因为利用了栈的先进后出的原理。
比如十进制的8,转化为八进制为 10。
这里先入栈的是0,后入栈的是1。
存储时是01,栈顶是1,所以先打印1后打印0,变为10。