【问题描述】编写程序实现用把整数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]; } }