#include<stdio.h>
#include<stdlib.h>
#define MAX 100+10
struct stack
{
int data[MAX];
int top;
};
void init(struct stack *s)//创建栈
{
s->top=-1;
}
int empty(struct stack *s)//判断空栈
{
if(s->top==-1)
return -1;
else
return 0;
}
void push(struct stack *s,int i)//进栈
{
if(s->top==MAX-1)
{
printf("栈满");
return ;
}
s->top++;
s->data[s->top]=i;
}
int pop(struct stack *s)//出栈
{
if(empty(s))
return -1;
return s->data[s->top--];
}
void trans(int m, int n)//进制转换函数
{
struct stack s;
int i,k;
init(&s);
while(m)
{
i=m%n;
push(&s,i);
m=m/n;
}
if(n<11)
{
while(!(empty(&s)))
{
k=pop(&s);
printf("%d",k);
}
}
if(n>10)
{
while(!(empty(&s)))
{
k=pop(&s);
switch(k)
{
case 1:;
case 2:;
case 3:;
case 4:;
case 5:;
case 6:;
case 7:;
case 8:;
case 9:;
case 10:printf("%d",k);break;
case 11:printf("A");break;
case 12:printf("B");break;
case 13:printf("C");break;
case 14:printf("D");break;
case 15:printf("E");break;
}
}
}
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
trans(m,n);
printf("\n");
}
return 0;
}
栈并不难希望大家好好学
#include<stdlib.h>
#define MAX 100+10
struct stack
{
int data[MAX];
int top;
};
void init(struct stack *s)//创建栈
{
s->top=-1;
}
int empty(struct stack *s)//判断空栈
{
if(s->top==-1)
return -1;
else
return 0;
}
void push(struct stack *s,int i)//进栈
{
if(s->top==MAX-1)
{
printf("栈满");
return ;
}
s->top++;
s->data[s->top]=i;
}
int pop(struct stack *s)//出栈
{
if(empty(s))
return -1;
return s->data[s->top--];
}
void trans(int m, int n)//进制转换函数
{
struct stack s;
int i,k;
init(&s);
while(m)
{
i=m%n;
push(&s,i);
m=m/n;
}
if(n<11)
{
while(!(empty(&s)))
{
k=pop(&s);
printf("%d",k);
}
}
if(n>10)
{
while(!(empty(&s)))
{
k=pop(&s);
switch(k)
{
case 1:;
case 2:;
case 3:;
case 4:;
case 5:;
case 6:;
case 7:;
case 8:;
case 9:;
case 10:printf("%d",k);break;
case 11:printf("A");break;
case 12:printf("B");break;
case 13:printf("C");break;
case 14:printf("D");break;
case 15:printf("E");break;
}
}
}
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
trans(m,n);
printf("\n");
}
return 0;
}
栈并不难希望大家好好学