进制转换——栈

#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;
}
 栈并不难希望大家好好学
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值