# include <stdio.h>
void toBase(int n, int base){
int buf[52] = {0}, len =0;
if(0 == n){
puts("0");
return ;
}
while(n){
buf[len++] = n%base;
n /= base;
}
int i;
for(i=len-1; i>=0;i--){
printf("%c", buf[i]<=9 ? buf[i]+'0': buf[i]-10+'A');
}
puts(" ");
}
int main(){
int n;
scanf("%d", &n);
toBase(n,2);
toBase(n,8);
toBase(n,16);
void toBase(int n, int base){
int buf[52] = {0}, len =0;
if(0 == n){
puts("0");
return ;
}
while(n){
buf[len++] = n%base;
n /= base;
}
int i;
for(i=len-1; i>=0;i--){
printf("%c", buf[i]<=9 ? buf[i]+'0': buf[i]-10+'A');
}
puts(" ");
}
int main(){
int n;
scanf("%d", &n);
toBase(n,2);
toBase(n,8);
toBase(n,16);
}
递归实现
# include<stdio.h>
void showBit(int n){
if (n > 1){
showBit(n/2);
printf(" ");
}
printf("%d", n%2);
}
void showOct(int n){
if (n > 7){
showOct(n/8);
printf(" ");
}
printf("%d", n%8);
}
void showHex(int n){
if (n > 15){
showBit(n/16);
printf(" ");
}
printf("%d", n%16);
}
int main(){
int a;
scanf("%d", &a);
showOct(a);
printf("\n");
showBit(a);
printf("\n");
showHex(a);
printf("\n");
}