用c++利用栈的基本操作实现将任意一个十进制整数转化为R进制整数
时间: 2024-04-30 11:23:05 浏览: 98
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100
typedef struct {
int top;
int stack[STACK_SIZE];
} Stack;
void InitStack(Stack *s) {
s->top = -1;
}
int IsEmpty(Stack *s) {
return s->top == -1;
}
int IsFull(Stack *s) {
return s->top == STACK_SIZE - 1;
}
void Push(Stack *s, int x) {
if (IsFull(s)) {
printf("Stack is full!\n");
exit(1);
}
s->stack[++s->top] = x;
}
int Pop(Stack *s) {
if (IsEmpty(s)) {
printf("Stack is empty!\n");
exit(1);
}
return s->stack[s->top--];
}
void Convert(int n, int R) {
Stack s;
InitStack(&s);
while (n) {
Push(&s, n % R);
n /= R;
}
while (!IsEmpty(&s)) {
printf("%d", Pop(&s));
}
}
int main() {
int n, R;
printf("Input a decimal integer: ");
scanf("%d", &n);
printf("Input a radix: ");
scanf("%d", &R);
printf("The result is: ");
Convert(n, R);
printf("\n");
return 0;
}
```
在这个程序中,我们定义了一个栈结构体,包含一个整数数组和栈顶指针。然后定义了栈的基本操作函数,包括初始化、判断是否为空、判断是否满、入栈和出栈。最后,我们定义了一个Convert函数用来将十进制整数n转化为R进制整数,并利用栈实现了这个功能。在主函数中,我们输入一个十进制整数n和一个进制R,然后调用Convert函数输出结果。
阅读全文