#include<bits/stdc++.h>usingnamespace std;voidtoBase(int n,int b)//将数值n转换为b进制输出 {if(n ==0)//如果n是0,不输出 return;toBase(n / b, b);//将n/b的值转为b进制输出 if(n % b >=10)//将n%b的值以b进制输出
cout <<char(n % b -10+'A');else
cout << n % b;}intmain(){int n, b;
cin >> n >> b;toBase(n, b);return0;}
解法2:递归构造b进制数字字符串
#include<bits/stdc++.h>usingnamespace std;
string toBase(int n,int b)//将数值n转换为b进制字符串 {if(n ==0)//如果n是0,不输出 returnstring("");char c;//n%b这一数字对应的字符 if(n % b >=10)//将n%b的值以b进制输出
c = n % b -10+'A';else
c = n % b +'0';returntoBase(n / b, b)+ c;//将n/b的值转为b进制字符串 后面连接c }intmain(){int n, b;
cin >> n >> b;
cout <<toBase(n, b);return0;}
解法3:非递归 值转b进制
#include<bits/stdc++.h>usingnamespace std;
string toBase(int n,int b)//将数值n转换为b进制字符串 {
string s ="";int a = n;char c;do{if(a % b >=10)
c = a % b -10+'A';else
c = a % b +'0';
s = c + s;
a /= b;}while(a >0);return s;}intmain(){int n, b;
cin >> n >> b;
cout <<toBase(n, b);return0;}