(分享)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



