#include <stdio.h>
#include <malloc.h>/** 数制转换* 把 一个数 转成任意进制* 本程序提供 2 8 16 任意进制转换,使用栈的特性*/// n输入的十进制整数 d转成的进制
int n, d;// 菜单界面
void menu()
{printf("请输入一个十进制整数: \n");scanf("%d",&n);if (n < 0){puts("目前仅支持正整数~");exit(1);}printf("======== 请选择转成N进制输出 ========\n");choose:printf("1. 转二进制\n");printf("2. 转八进制\n");printf("3. 转十六进\n");scanf("%d",&d);if(d == 1) d = 2;else if(d == 2)d = 8;else if(d == 3)d = 16;else{puts("---- 输入有误请重试 ----");goto choose;}
}// 函数用于处理进制转换
void f(int x,int base) {int tt = 0; // tt = 0表示栈空int stk[100];while (x){int t = x % base;x /= base;stk[++tt] = t;}while (tt){int num = stk[tt--];// 处理十六进制 A ~ Fif(num >= 10) printf("%c",(55 + num));else printf("%d",num);// 二进制换行if(d == 2 && tt % 4 == 0)printf(" ");}
}
int main()
{// 菜单menu();// 转换函数f(n,d);return 0;
}