用C语言开发一段程序,利用栈实现十进制数向八进制数的转换。
时间: 2024-11-03 15:13:07 浏览: 58
在C语言中,我们可以使用数组模拟栈数据结构,通过遍历输入的十进制数字并逐位处理,将每一位转换成对应的八进制值,然后压入栈中。最后,我们从栈顶开始取出元素并拼接,形成最终的八进制数。下面是一个简单的示例:
#include <stdio.h>
#include <stdlib.h>
// 定义栈结构体
typedef struct {
int data[100]; // 栈容量足够大以容纳最大10进制数
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 入栈操作
void push(Stack *stack, int value) {
if (stack->top >= sizeof(stack->data) - 1) {
printf("Stack overflow.\n");
return;
}
stack->data[++stack->top] = value;
}
// 出栈操作
int pop(Stack *stack) {
if (stack->top == -1) {
printf("Stack is empty.\n");
return -1;
}
return stack->data[stack->top--];
}
// 十进制转八进制辅助函数
int decimal_to_octal(int digit) {
return digit / 8 * 10 + digit % 8;
}
// 主函数
int main() {
int input;
Stack stack;
init(&stack);
printf("Enter a decimal number: ");
scanf("%d", &input);
while (input > 0) {
push(&stack, decimal_to_octal(input % 8));
input /= 10;
}
// 反转栈,因为出栈是从栈顶开始
int octal = 0;
while (!stack.is_empty()) {
octal = octal * 8 + pop(&stack);
}
printf("The octal representation is: %o\n", octal);
return 0;
}
在这个程序中,我们首先读取用户输入的十进制数,然后对每一位进行八进制转换,并存储到栈中。当所有位都处理完后,再从栈里取出并组合成八进制数。
相关推荐

















