输入一个10进制数字,转换为6进制数字,普通方法和递归实现

题目描述

小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。

输入描述

输入一个正整数n  (1 ≤ n ≤ 109)

输出描述

输出一行,为正整数n表示为六进制的结果

示例1:输入:6     输出:10

示例2:输入:120      输出:320

思路分析:这种题目有2种做法,一种是常规做法,另一种是递归做法。

首先来看常规做法,我们知道转换成6进制,就是一个数对6取余,一直到这个数为0为止,我们以10进制的120为例,120%6=0,120/6=20;20%6=2,20/6=3;3%6=3,3/6=0,所以转化为6进制是320,我们可以把每次取余的结果放在一个数组当中,然后再逆序打印出来就行。

代码实现

#include<stdio.h>
int main()
{
    int n, i = 0, num[100], j;
    scanf("%d", &n);
    while (n / 6 != 0)
    {
        num[i] = n % 6;
        n = n / 6;
        i++;
    }
    printf("%d", n);
    for (j = i - 1; j >= 0; j--)
        printf("%d", num[j]);
    return 0;
}

接下来说一下递归的方法,我们以前做过一个相似的题目,就是把一个数分别逆序打印和顺序打印,而这个题目就与顺序打印类似,当n==0的时候就停下,话不多说,直接看代码。我也会画图来帮助小伙伴们来理解。

代码实现

Print(int n)
{
	if (n == 0);//n=0时停下
	else
	{
		Print(n / 6);
		printf("%d", n % 6);
	}
	
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	Print(n);
	return 0;
}

好了,题目讲完了,感谢各位小伙伴们观看,天气逐渐变冷,小伙伴们不要忘记保暖哦。

如果有小伙伴们想练习一下,也可以哦。链接:小乐乐与进制转换_牛客题霸_牛客网

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值