10进制转换为任意进制

需要对0特判,即为0的时候直接输出0

c++版:

#include <iostream>

using namespace std;
const int maxn = 2000;
char c[] ={"0123456789ABCDEFGHIJKLHIMNOPQRSTUVWXYZ"};
int num = 16;            ///10进制->16进制
char a[maxn];            ///结果数组
int cnt;        
void hix(int x){
    if(x)
        hix(x/num);
    a[cnt++] = c[x%16];
}


int main()
{
    int n;
    cin >> n;
    hix(n);
    cout << a+1 <<endl;
    return 0;
}

c语言版:

#include <stdio.h>
const int maxn = 2000;
char c[] ={"0123456789ABCDEFGHIJKLHIMNOPQRSTUVWXYZ"};
int num = 16;            ///10进制->16进制
char a[maxn];            ///结果数组
int cnt;
void hix(int x){
    if(x)
        hix(x/num);
    a[cnt++] = c[x%num];
}


int main()
{
    int n;
    scanf("%d",&n);
    hix(n);
    printf("%s",a+1);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/bestsort/article/details/80196075