一、题目描述
循环输入。给定一个十进制数 d d d和一个进制 X ( 2 ≤ X ≤ 16 ) , X(2≤X≤16), X(2≤X≤16),输出它的 X X X进制表示。当没有任何输入时,程序结束。
二、解题思路
除留余数法
。模对应的进制,不断取留余数,并且除上对应的值,直到商为0停止。将余数逆序排列得到的就是对应转换后的值。
三、解题代码
#include <stdio.h>
#include <string.h>
void Print(int num)
{
if (10 <= num && num <= 16)
{
printf("%c",num - 10 +'A');
}
else
{
printf("%d",num);
}
}
int main()
{
int ans[100];
int d,x;
while(scanf("%d%d",&d,&x)!= EOF)
{
memset(ans,0,100);
if (0 == d)
{
printf("0\n");
continue;
}
else if (d < 0)
{
printf("-");
d = -d;
}
while(d)
{
ans[++ans[0]] = d % x;
d /= x;
}
for(int i = ans[0]; i > 0; --i)
{
Print(ans[i]);
}
printf("\n");
}
return 0;
}
这里的除留余数法要是还不理解的话,不要着急,举两个例子看一看,比如说举5和7的例子,自己动手在纸上演算一下除留余数法,然后对着代码理解一下,要是还不理解可以在文章下面评论留言或者私信作者。
四、写在最后
该文章内容是我阅读了优快云博主英雄哪里出来
的博文后,自己记录的一些观点和想法,希望对大家有帮助。英雄哪里出来
的对应博文地址:传送门