题目描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是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;
}
好了,题目讲完了,感谢各位小伙伴们观看,天气逐渐变冷,小伙伴们不要忘记保暖哦。
如果有小伙伴们想练习一下,也可以哦。链接:小乐乐与进制转换_牛客题霸_牛客网