利用栈的基本操作实现将任意-一个十进制整数转化为R进制整数的c语言代码
时间: 2024-11-29 15:36:27 浏览: 22
在C语言中,我们可以利用栈数据结构来将任意一个十进制整数转换成R进制。以下是一个简单的代码示例,这里使用了递归的方式:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义函数用于计算商和余数
void divide(int dividend, int divisor, int *quotient, int *remainder) {
if (dividend == 0) {
*remainder = 0;
return;
}
*remainder = dividend % divisor; // 计算余数
*quotient = dividend / divisor; // 计算商
divide(*quotient, divisor, quotient, remainder);
}
// 将十进制转R进制
void decimalToRadic(int base, int decimal) {
int quotient, remainder;
stack<int> r_base_stack;
divide(decimal, base, "ient, &remainder);
while (remainder != 0) {
r_base_stack.push(remainder);
divide(quotient, base, "ient, &remainder);
}
// 输出R进制数(从栈顶开始)
printf("%d", r_base_stack.top());
while (!r_base_stack.empty()) {
printf("%d", r_base_stack.top());
r_base_stack.pop();
}
printf("\n");
}
int main() {
int decimal_num, radix;
printf("请输入一个十进制整数: ");
scanf("%d", &decimal_num);
printf("请输入基数(R): ");
scanf("%d", &radix);
decimalToRadic(radix, decimal_num);
return 0;
}
```
在这个代码中,我们首先读取用户输入的十进制整数和目标基数,然后调用`decimalToRadic`函数进行转换。这个函数通过不断除以基数并保存余数到栈中,最后再从栈里依次弹出余数输出,就得到了对应的R进制表示。
阅读全文