![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/716d1588a684bc919208ef4b7ab7f67d.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cc24fd50962600077aa66b2a20283f94.png)
思路:
1.取模%:
①0~9:数字转字符输出->b[i++]=n%16-10+'A';
//-10是因为10(A),11(B),12(C)比A的基础上多了(n%16-10个)
②10~15:A、B、C、D、E、F字符输出->b[i++] = n%16+'A'-10;
2.除商/:
进行下一取模做准备;
3.n=0:
计算结束;
4.倒着输出:int m = i-1; m >= 0; m--
主要是根据图示步骤,进行代码描写。
注意点:
1.i++:之后,是比真正存储空间多1;所以倒着输出时,要令初始值m=i-1;
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
char b[100];//用字符数组存放取模结果[因为要存有A\B\C\D\E\F]
int i = 0;
if(n==0){
cout<<"0";
}
else{
while(n!=0){
if((n%16) >= 10){
b[i++] = n%16+'A'-10;
}
else{
b[i++] = n%16+'0';
}
n/=16;
}
}
for(int m = i-1; m >= 0; m--){
cout<<b[m];
}
return 0;
}