A30620 进制转换题解 思路见注释
2026-08-22 11:53:31
发布于:广东
20阅读
0回复
0点赞
方法1
#include<bits/stdc++.h>
using namespace std;
string hexi="0123456789ABCDEF";
int main(){
int n,o;//o为目标进制,n为需要转换的数
cin>>o>>n;
string s;//存我们转换之后的o进制数
while(n){//等价于 while(n!=0)
//因为这里n%o得到的是整数,需要把他转换为字符
//hexi这个字符串里面存的是不同余数对应的字符
char yushu=hexi[n%o];
s=yushu+s;//这是把每次取出来的余数转换之后的字符放到最前面
n/=o;
}
cout<<s;
return 0;
}
方法2
#include <bits/stdc++.h>
using namespace std;
int n,o;
string s;
//最多把十进制转换为36进制,字母一共26个,数字10个
int main() {
cin>>n>>o;//将十进制数n转为o进制数
while(n!=0){
//10 11 12 13 14 15 16...
//A B C D E F G ...
//如果你的余数超过9,就无法用数字表示,需要用字母
//比如当前余数是10,对应的字符应该是A
//根据算式 n%o=10 10-10+'A'=0+'A'='A' + s
if(n%o>9)s=char(n%o-10+'A')+s;
//假设余数是3,则对应的字符是'3'
else s=char(n%o+'0')+s;
n/=o;//每次除o
}
cout<<s;
}
全部评论 2
nb
2026-08-22 来自 广东
02026-08-21 来自 广东
0






有帮助,赞一个