数据结构实验之栈一:进制转换
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入一个十进制整数,将其转换成对应的R(2<=R<=9)进制数,并输出。
输入
第一行输入需要转换的十进制数;
第二行输入R。
第二行输入R。
输出
输出转换所得的R进制数。
示例输入
1279 8
示例输出
2377
提示
来源
示例程序
#include<stdio.h>
#include<stdlib.h>
#define maxsize 10000
#define sizenum 10000
typedef struct
{
int *base;
int *top;
int stsize;
}Sq;
int Initial(Sq*s)
{
s->base=(int *)malloc(maxsize*sizeof(int));
if(!s->base)
return -1;
s->top=s->base;
s->stsize=maxsize;
return 0;
}
int push(Sq*s,int t)
{
while(s->top-s->base>s->stsize)
{
s->base=(int *)realloc(s->base,(s->stsize+sizenum)*sizeof(int));
if(!s->base)
return -1;
s->top=s->base+s->stsize;
s->stsize+=sizenum;
}
*(s->top++)=t;
return 0;
}
void change(Sq*s,int n,int r)//进制转换
{
int t;
while(n!=0)
{
t=n%r;
n=n/r;
push(s,t);
}
}
void pop(Sq*s)
{
while(s->top>s->base)
{
printf("%d",*(--s->top));
}
printf("\n");
}
int main()
{
Sq s;
int n,r;
Initial(&s);
scanf("%d%d",&n,&r);
change(&s,n,r);
pop(&s);
return 0;
}
#include<stdlib.h>
#define maxsize 10000
#define sizenum 10000
typedef struct
{
int *base;
int *top;
int stsize;
}Sq;
int Initial(Sq*s)
{
s->base=(int *)malloc(maxsize*sizeof(int));
if(!s->base)
return -1;
s->top=s->base;
s->stsize=maxsize;
return 0;
}
int push(Sq*s,int t)
{
while(s->top-s->base>s->stsize)
{
s->base=(int *)realloc(s->base,(s->stsize+sizenum)*sizeof(int));
if(!s->base)
return -1;
s->top=s->base+s->stsize;
s->stsize+=sizenum;
}
*(s->top++)=t;
return 0;
}
void change(Sq*s,int n,int r)//进制转换
{
int t;
while(n!=0)
{
t=n%r;
n=n/r;
push(s,t);
}
}
void pop(Sq*s)
{
while(s->top>s->base)
{
printf("%d",*(--s->top));
}
printf("\n");
}
int main()
{
Sq s;
int n,r;
Initial(&s);
scanf("%d%d",&n,&r);
change(&s,n,r);
pop(&s);
return 0;
}