Fork me on GitHub

十进制数转N(N<36)进制

十进制数转N(N<36)进制

/*
    十进制转 n 进制(n 大于10 用ABCDEF来表示) 
*/ 

#include <iostream>
#include <vector>
using namespace std;

// 只能将十进制转换为小于10的进制 
void SysConvert1(int num, int n)  // 十进制数num转为 n进制
{
    int mod = num % n;
    num = num / n;
    if (num == 0) {
        // 当商为0的时候,就不用继续做短除法了
        // 跳到printf开始从后往前依次打印就行了
         
    } else {
        SysConvert1(num, n);
    } 
    
    cout << mod;
 } 

// 可以将十进制转换为其他进制 
void SysConvert2(int num, int n)
{
    int c;
    vector<int> v;
    if (num < 0) {
        num = -num;
        cout << '-';
    }
    
    while (num!=0) {
        c = num % n;
        num = num / n;
        v.push_back(c);   // 将余数按顺序存入数组中 
    }
    
    for (int i=v.size()-1;i>=0;i--) {  // 输出转换后的序列 
        if (v[i] >= 10) {  // 若为十六进制等,则输出相应的字母 
            cout << (char)(v[i] + 55);
        } else {  // 否则直接输出数字 
            cout << v[i];
        } 
    } 
    cout << endl;
}

int main()
{
    long num;
    int n;
    
    cin >> num >> n;
    
    SysConvert2(num, n);
    
    return 0;
 }

 

posted @ 2020-12-17 10:44  小黑子杜  阅读(149)  评论(0编辑  收藏  举报