实验要求: 通过递归算法将十进制数转换成任意进制数,打印转换结果。
实验原理: 进制是数学中的概念,指表示数值大小的基。在计算机中,常见的进制有二进制、八进制和十六进制。不同进制的数码位数不同,对表示数字大小有重要的影响。
实验思路:
- 通过输入读取十进制数 X 和进制 M。
- 使用递归算法将十进制数 X 转换成任意进制数 M。
- 最后,打印出转换结果。
实验代码:
#include <stdio.h>
#include <stdlib.h>
void ConvertToM(int x, int m) {
if (x == 0) {
return;
}
ConvertToM(x / m, m); // 递归调用
printf("%d", x % m); // 输出余数
}
int main() {
int x, m;
printf("Please input a decimal number X: ");
scanf("%d", &x);
printf("Please input a base number M: ");
scanf("%d", &m);
printf("%d to base %d is: ", x, m);
ConvertToM(x, m);
printf("\n");
return 0;
}
运行结果:
Please input a decimal number X: 23
Please input a base number M: 2
23 to base 2 is: 10111
总结: 通过递归算法实现了十进制数转换成任意进制数的操作。在函数内部通过递归调用,将数字每次除以进制数,并输出余数。最后,将余数按逆序输出,即可得到转换结果。