题目:小乐乐与进制转换
![](https://i-blog.csdnimg.cn/blog_migrate/aeb806b49d5d3d2093fa4e84f3c10d58.png)
题目分析:
在我们学习其他进制的过程中,我们不妨想一想是如何将一个十进制的数字转化为二进制、八进制或者是十六进制的。
所以在这里我们使用的方法是除留余数法。
![](https://i-blog.csdnimg.cn/blog_migrate/801e4d808a86b467e632cdd78a99584b.png)
代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[40] = { 0 };
int n = 0;
int i = 0;
int count = 0;
scanf("%d", &n);
while (n / 6 != 0)
{
arr[i] = n % 6;
n = n / 6;
count++;
i++;
}
if (n / 6 == 0 && n % 6 != 0)
{
arr[i] = n % 6;
count++;
}
for (i = count; i > 0; i--)
{
printf("%d", arr[i]);
}
return 0;
}
我在本题使用了数组存储转换后的每一位,循环进行取余数的操作,如果商不为0,那么商就是下一个被除数,将每一位的余数记录在数组中,并利用count计数器来计算数组内存放数字的个数。
当结束循环时,如果被除数小于除数,结果也可能为0,所以我在跳出循环后进行了if语句的判断,如果说,跳出循环后的被除数除以6等于0,但是被除数模6不为0,那么我们依然需要保存余数。
最后逆序打印输出得到进制转换结果。
感谢大家阅读,欢迎批评指正!