(分享)10进制转换为2 - 36进制
程序代码:
#include <stdio.h> #include <stdlib.h> char * dec_to_x_string(int, int); int get_digits(int, int); int main(void) { int dec, x; scanf("%d%d", &dec, &x); char * str = dec_to_x_string(dec, x); if(str == NULL) { return 1; } printf("%s\n", str); free(str); return 0; } char * dec_to_x_string(int dec, int x) { if(x < 2 || x > 36) { printf("UnsupportedOperation\n"); return NULL; } int digits = get_digits(dec, x); char * str = (char *)malloc(sizeof(char) * digits + 1); str[digits] = '\0'; int ch; while(dec) { ch = dec % x; if(ch > 9) { ch = ch - 10 + 65; } else { ch += 48; } str[--digits] = (char)ch; dec /= x; } return str; } int get_digits(int dec, int x) { int digits = 0; while(dec) { dec /= x; digits++; } return digits; }代码不是很难,顺便补充一下:
G : 16
H : 17
I : 18
J : 19
K : 20
...
34 : Y
35 : Z