欢迎来到 A_Dull_Rabbit 的博客

数据结构实训(二)--- 整数的N进制字符串表示

【问题描述】编写程序实现用把整数n转换成以b为基的b进制数。如果n为负数,则输出的字符串的第一个字符为 -。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是 0 和 1;当b=16时,输出字符串中可能含有字符为 0- 9,a-f(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为"1g"。
【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.
【输出形式】控制台输出转化后的字符串s.
【样例输入1】5 2
【样例输出1】101
【样例输入2】-8 8
【样例输出2】-10
【样例说明】5的二进制就是101

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

int main()
{

    // 存储各进制所需的数
    vector<char> saveNum;
    for(int i=0; i<36; i++)
    {
        if(i<10)
        {
            saveNum.push_back('0'+i);
        }
        else
        {
            saveNum.push_back('a'+i-10);
        }
    }

    vector<char> outNum;    // 输出向量

    int inputeNum, overNum; // 原始数 进制数
    cin >> inputeNum >> overNum;

    if(inputeNum<0){        // 判断正负 负数取正
        cout << "-";
        inputeNum = -inputeNum;
    }

    // 进制转换
    while(inputeNum!=0)
    {
        int temp = inputeNum%overNum;
        outNum.push_back( saveNum[temp]);
        inputeNum = inputeNum/overNum;
    }

    // 逆向输出
    for(int i=outNum.size()-1; i>=0; i--)
    {
        cout << outNum[i];
    }
}

 

posted on 2020-03-24 14:29  A_Dull_Rabbit  阅读(266)  评论(0编辑  收藏  举报

导航