0
点赞
收藏
分享

微信扫一扫

数制转换问题进制(十进制转二、八、十六进制)-栈的应用(c语言)

诗远 2022-04-04 阅读 55
数据结构

输入一个10进制数N,转换成一个r进制(r可以是2,8,16)的数输出。输入输出格式如下:

输入:18 2

输出:18=(1000)2

输入:1000  16

输出:1000=(3EB)16

输入:177  8

输出:177=(261)8

程序完整代码:

#include<string.h>
#include<stdlib.h>
#define SIZE 100
typedef struct
{
    int data[SIZE];
    int top;
}seqstack;
 int main(void)
{
    int N, r, x, sum;
    int A, B, C, D, E, F;
    printf("请输入一个10进制数字和要转换的进制: "); 
    scanf("%d%d", &N,&r);
    seqstack* s;
    s = (seqstack*)malloc(sizeof(seqstack));
    s->top = -1;
    printf("%d=(",N);
          while (N)//按顺序进栈
          {
              if (s->top != SIZE - 1)
              {
                  s->top++;
                  s->data[s->top] = N % r;
                  N = N / r;
              }
          } 
          while (s->top != -1)//按顺序出栈
            {
                x = s->data[s->top];
                if (x == 10) printf("A");
                if (x == 11) printf("B");
                if (x == 12) printf("C");
                if (x == 13) printf("D");
                if (x == 14) printf("E");
                if (x == 15) printf("F");
                if(x<10) printf("%d", x);
                s->top--;
            }
           printf(")%d", r);
}

程序运行结果:

 

举报

相关推荐

十进制转十六进制

十六进制转十进制

0 条评论