/*
Name:
Copyright:
Author:
Date: 18/09/11 19:56
Description: 十进制数表示成二进制,八进制和十六进制
*/
#include <stdio.h>
#include <stdlib.h>
void reverse(char *ch)
{
int len = 0;
len = strlen(ch);
int i = 0;
int len2 = 0;
len2 = (int)(len/2);
char tmp = 0;
for ( i=0; i<len2; i++)
{
tmp = ch[i];
ch[i] = ch[len-1-i];
ch[len-1-i] = tmp;
}
}
void dtob (int i, char ch[])
{
int tmp = 0;
int k = 0;
while(i)
{
tmp = i%2;
switch(tmp)
{
case 0: ch[k] = '0'; break;
case 1: ch[k] = '1'; break;
default: break;
}
i = i >> 1;
k++;
}
reverse(ch);
}
void dtoo(int i, char ch[])
{
int tmp = 0;
int k = 0;
while(i)
{
tmp = i%8;
switch(tmp)
{
case 7: ch[k] = '7'; break;
case 6: ch[k] = '6'; break;
case 5: ch[k] = '5'; break;
case 4: ch[k] = '4'; break;
case 3: ch[k] = '3'; break;
case 2: ch[k] = '2'; break;
case 1: ch[k] = '1'; break;
case 0: ch[k] = '0'; break;
default: break;
}
i = i >> 3;
k++;
}
reverse(ch);
}
void dtoh(int i, char ch[])
{
int tmp = 0;
int k = 0;
while(i)
{
tmp = i%16;
switch(tmp)
{
case 15: ch[k] = 'F'; break;
case 14: ch[k] = 'E'; break;
case 13: ch[k] = 'D'; break;
case 12: ch[k] = 'C'; break;
case 11: ch[k] = 'B'; break;
case 10: ch[k] = 'A'; break;
case 9: ch[k] = '9'; break;
case 8: ch[k] = '8'; break;
case 7: ch[k] = '7'; break;
case 6: ch[k] = '6'; break;
case 5: ch[k] = '5'; break;
case 4: ch[k] = '4'; break;
case 3: ch[k] = '3'; break;
case 2: ch[k] = '2'; break;
case 1: ch[k] = '1'; break;
case 0: ch[k] = '0'; break;
default: break;
}
i = i >> 4;
k++;
}
reverse(ch);
}
main()
{
int i;
char ch1[11] = {0};
char ch2[11] = {0};
char ch3[11] = {0};
scanf("%d", &i);
dtob(i, ch1);
dtoo(i, ch2);
dtoh(i, ch3);
printf("%s\n", ch1);
printf("%s\n", ch2);
printf("%s\n", ch3);
system("pause");
}
评论