对于键盘输入的任意一个非负十进制整数,打印输出与其等值的八进制数。利用顺序栈模拟,用c语言编写
时间: 2024-02-13 16:07:51 浏览: 82
好的,以下是用顺序栈模拟的c语言代码:
```c
#include <stdio.h>
#define STACK_SIZE 50
typedef struct {
int data[STACK_SIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int push(Stack *s, int value) {
if (s->top == STACK_SIZE - 1) {
return 0;
}
s->top++;
s->data[s->top] = value;
return 1;
}
int pop(Stack *s, int *value) {
if (s->top == -1) {
return 0;
}
*value = s->data[s->top];
s->top--;
return 1;
}
int main() {
Stack s;
int num, remainder;
printf("请输入一个非负十进制整数:");
scanf("%d", &num);
initStack(&s);
while (num != 0) {
remainder = num % 8;
push(&s, remainder);
num = num / 8;
}
printf("转换为八进制数为:");
while (s.top != -1) {
pop(&s, &remainder);
printf("%d", remainder);
}
printf("\n");
return 0;
}
```
程序的思路是利用栈来实现进制转换,先将十进制整数不断除以8并将余数压入栈中,直到商为0。然后再依次出栈,得到的数字就是转换后的八进制数。
阅读全文