数据结构实验之栈与队列一:进制转换
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。
Output
输出转换所得的 R 进制数。
Example Input
1279
8
Example Output
2377
#include <stdio.h>
#define STACKSIZE 110
#define OK 1
#define TRUE 1
#define FALSE 0
int flag;
typedef int ElemType; //用elemtype代替int。需要更改的时候直接在这里改就可以了。
typedef int Status;
typedef struct
{
ElemType data[STACKSIZE];
int top;
} SeqStack;
void InitStack(SeqStack *s)//构造空栈。
{
(*s).top = 0;
}
Status StackFull(SeqStack s)
{
if(s.top==STACKSIZE-1) return FALSE;//判断是否栈满。
return TRUE;
}
void Push(SeqStack *s, ElemType p)//入栈
{
if(!StackFull(*s))//如果栈满。
{
flag=1;
}
else//如果栈不满
{
(*s).data[(*s).top]=p;
(*s).top++;
}
}
Status StackEmpty(SeqStack s)
{
if(s.top == 0) return FALSE;//栈空。
return TRUE;
}
Status Pop(SeqStack *s,ElemType *p)//出栈。
{
if(!StackEmpty(*s)) return FALSE;
(*s).top--;
*p=(*s).data[(*s).top];
return TRUE;
}
void conversion()
{
ElemType n, m;
int p;
SeqStack s;
flag = 0;
scanf("%d", &n);
scanf("%d", &m);
if(n == 0)
printf("0\n");
else
{
InitStack(&s);
while(n)
{
Push(&s, n%m);
n = n / m;
}
if(!flag)
{
while(StackEmpty(s)==1)
{
Pop(&s, &p);
printf("%d", p);
}
printf("\n");
}
}
}
int main()
{
conversion();
return 0;
}