一、利用余数转换
1.十进制内转换
进制转换实质为余数
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,a[100000],b[100000],i=0;
cin>>n>>k;
while(n>0){
a[i++]=n%k;
n=n/k;
}
for(i=i-1;i>=0;i--){
cout<<a[i];
}
}
2.十六进制
利用储存数组来进行转换
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,a[100000],i=0;
cin>>n>>k;
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(n>0){
a[i++]=n%k;
n=n/k;
}
for(i=i-1;i>=0;i--){
cout<<b[a[i]];
}
}
二、利用递归骗机器 (以八进制为例)仍只能判断十进制内)
#include<bits/stdc++.h>
using namespace std;
int f(int n);
int main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
}
int f(int n){
if(n<8)
return n;//结束条件
else return n%8+10*f(n/8);//返回值
}
变式1
递归倒置(待补充)