用c语言写一程序,利用顺序栈将一个十进制整数转换成八进制整数,要求输入一个十进制数,输出一个八进制数;
时间: 2024-11-05 16:24:21 浏览: 46
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
在C语言中,我们可以使用数组来模拟一个简单的顺序栈,并通过迭代的方式将十进制数转换为八进制数。以下是一个示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序栈结构体
typedef struct {
int data[100]; // 栈的最大容量
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 underflow.\n");
return -1;
}
return stack->data[stack->top--];
}
// 将十进制数转换为八进制并入栈
void decimal_to_octal(int dec, Stack *stack) {
while (dec > 0) {
stack->top++;
push(stack, dec % 8);
dec /= 8;
}
}
// 打印栈中的数字,逆序得到八进制表示
void print_octal(Stack *stack) {
int i;
for (i = stack->top; i >= 0; i--) {
printf("%d", stack->data[i]);
}
printf("\n");
}
int main() {
Stack s;
int dec_num, oct_num;
init(&s); // 初始化栈
printf("Enter a decimal number: ");
scanf("%d", &dec_num);
decimal_to_octal(dec_num, &s); // 转换并入栈
print_octal(&s); // 输出八进制结果
return 0;
}
```
在这个程序中,我们首先初始化一个栈,然后读取用户输入的十进制数。接着,我们将十进制数不断除以8并将余数压入栈,直到商变为0。最后,我们从栈顶开始打印出所有元素,这就是我们的八进制数字。
阅读全文