用c++编写递归将十进制转换为十六进制

 我来答
Forever龙吟
2016-11-24
知道答主
回答量:3
采纳率:0%
帮助的人:3.6万
展开全部

这个和十进制转成二进制很像

假设这个十进制数为n

就是不断取模,除以十六。。。一直到n==0

下面的是递归求解

#include <stdio.h>
#include <iostream>
using namespace std;
int n,cnt=0;
char num[10];
void dfs(int x){
    if(x/16!=0) dfs(x/16);
    if((x%16)<10) num[++cnt]=x%16+'0';
    else num[++cnt]=x%16-10+'A';
}
int main(){
    cin>>n;
    dfs(n);
    for(int i=1;i<=cnt;i++)
      cout<<num[i];
    return 0;
}

这是循环的

#include <stdio.h>
#include <iostream>
using namespace std;
int n,cnt=0;
char num[10];
int main(){
cin>>n;
while(n/16!=0){
  int tmp=n%16;
  if(tmp<10) num[++cnt]=tmp+'0';
  else num[++cnt]=tmp-10+'A';
  n/=16;
}
if(n!=0)
  if(n<10) num[++cnt]=n+'0';
  else num[++cnt]=n-10+'A'; 
for(int i=cnt;i>=1;i--)
  cout<<num[i];
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式