用栈设计一c语言算法把一个十进制整数转换为二至九进制之间的任一进制数输出完整代码
时间: 2024-11-15 22:21:00 浏览: 6
将一个十进制整数转换为任意特定进制(2到9之间),可以采用栈数据结构来实现。这里以C语言为例,给出一种简单的遍历除法的方法:
```c
#include <stdio.h>
#include <stdlib.h>
// 助记符表示的数字映射表
char digit_map[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int decimal_to_base(int num, int base) {
// 检查输入范围
if (base < 2 || base > 9) {
printf("Invalid base! Base should be between 2 and 9.\n");
return -1;
}
stack<int> digits; // 使用数组作为简单栈实现
while (num > 0) {
int remainder = num % base;
digits.push(remainder); // 将余数压入栈
num /= base;
}
// 反向弹出栈并打印结果
for (int i = digits.size() - 1; i >= 0; i--) {
printf("%c", digit_map[digits.top()]);
digits.pop();
}
return 0;
}
int main() {
int decimal_num = 123; // 需要转换的十进制数
int target_base = 3; // 目标进制
if (decimal_to_base(decimal_num, target_base) == 0) {
printf("The number %d in base %d is %s\n", decimal_num, target_base, digit_map[decimal_to_base(decimal_num, target_base)]);
}
return 0;
}
```
这个程序会将给定的十进制数`decimal_num`转换为目标进制`target_base`。注意,对于较大的数或者较高的进制,使用链式栈或者其他更高效的数据结构可能会更好。
阅读全文