1161:转进制
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 14547 通过数: 10392
【题目描述】
用递归算法将一个十进制数X转换成任意进制数M(M≤16)。
【输入】
一行两个数,第一个十进制数X,第二个为进制M。
【输出】
输出结果。
【输入样例】
31 16 {将十进制31转化为十六进制数}
【输出样例】
1F
【分析】
十六进制,总共有16个数,分别是0~9 和 A~F。可以用字符数组存储这16个数,10 TO R 进制转换的方法是短除法,整数部分除R取余,逆序输出。小数部分乘R取整,正序输出。
【参考代码】
#include <stdio.h> void calculate(int n,int k) { char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int tmp; tmp=n%k; n/=k; if(n!=0) calculate(n,k); printf("%c",num[tmp]); } int main() { int x,m; scanf("%d%d",&x,&m); calculate(x,m); printf("\n"); return 0; }
http://ybt.ssoier.cn:8088/problem_show.php?pid=1161