数制转换
思路
- 取模入栈
- 出栈打印
代码
enum DigitType {
B = 2,
O = 8,
X = 16
} digitType;
void conversion(int N, enum DigitType dt) {
switch (dt) {
case B:
printf("二进制:");
break;
case O:
printf("八进制:");
break;
case X:
printf("十六进制:");
break;
}
int stackSize = 10;
int *stack = (int*)malloc(sizeof(int) * 10);
int top = -1;
while (N) {
if (top == stackSize - 1) {
stackSize = stackSize + 10;
stack = realloc(stack, stackSize *sizeof(int));
}
top ++;
stack[top] = N % dt;
N = N / dt;
}
while (top != -1) {
int tmp = stack[top];
switch (tmp) {
case 10:
printf("a");
break;
case 11:
printf("b");
break;
case 12:
printf("c");
break;
case 13:
printf("d");
break;
case 14:
printf("e");
break;
case 15:
printf("f");
break;
default:
printf("%d", tmp);
break;
}
top --;
}
printf("\n");
}
int main(int argc, const char * argv[]) {
printf("Hello, 数制转换!\n");
conversion(10 , B);
conversion(10 , O);
conversion(10 , X);
conversion(1348 , B);
conversion(1348 , O);
conversion(1348 , X);
return 0;
}
运行
传送门
算法题-爬楼梯