/*
问题:数制转换,逆序输出
思路:求余--轮除--求余,分解后保存在数组中。
      数组逆序输出为,所得。
*/

#include
<iostream>
#include
<cstring>
using namespace std;
int main()
{
    
int i,radix;
    
long n;
    
char a[32];
    
void trans(char *p,long m,int base);
    cout
<<"Input radix(2,8,16):";
    cin
>>radix;
    cout
<<"\nInput a positive number:";
    cin
>>n;
    trans(a,n,radix);
    
//正序输出:比如1245644
    for(i=strlen(a)-1;i>=0;i--) cout<<a[i];
    cout
<<endl;
    
//逆序输出:比如4465421
    for(i=0;i<=strlen(a)-1;i++) cout<<a[i];
    cout
<<endl;
    
return 0;
}

//数制转换函数
void trans(char *p,long m,int base)
{
    
int r;
    
while(m>0)
    
{
        r
=m%base;//求余
        if(r<10
            
*p=r+48;//code转换为char
        else 
            
*p=r+55;//code转换为char
        m/=base;//轮除
        p++;
    }

    
*p=0;
}