c语言写出用顺序栈将一个非负十进制整数转换成八进制数。
时间: 2023-06-03 21:04:20 浏览: 180
可以的,以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 20 // 定义栈的大小
typedef struct Stack_struct {
int top;
int data[STACK_SIZE];
} Stack;
void init_stack(Stack* s) // 初始化函数
{
s->top = -1;
}
void push(Stack* s, int elem) // 入栈函数
{
if (s->top == STACK_SIZE - 1) {
printf("栈已满,无法再入栈!\n");
} else {
s->data[++s->top] = elem;
}
}
int pop(Stack* s) // 出栈函数
{
if (s->top == -1) {
printf("栈已空,无法再出栈!\n");
return -1;
} else {
return s->data[s->top--];
}
}
int octal_conversion(int dec_num) // 十进制转八进制函数
{
int octal_num = 0;
Stack s;
init_stack(&s);
while (dec_num != 0) { // 入栈十进制数
push(&s, dec_num % 8);
dec_num /= 8;
}
while (s.top != -1) { // 出栈八进制数
octal_num = octal_num * 10 + pop(&s);
}
return octal_num;
}
int main()
{
int dec_num, octal_num;
printf("请输入一个非负十进制整数:");
scanf("%d", &dec_num);
octal_num = octal_conversion(dec_num);
printf("转换后的八进制数为:%d\n", octal_num);
return 0;
}
```
阅读全文