#include <stdio.h>
#include <math.h>
#include <string.h>
char hashcode[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void toBinary(int n)
{
int s[1000],top=-1;
while(n)
{
s[++top]=n%2;
n/=2;
}
while(top!=-1)
printf("%d",s[top--]);
printf("\n");
}
void toOctonary(int n)
{
char s[1000],top=-1;
while(n)
{
s[++top]=hashcode[n%8];
n/=8;
}
while(top!=-1)
printf("%c",s[top--]);
printf("\n");
}
void toHex(int n)
{
char s[1000],top=-1;
while(n)
{
s[++top]=hashcode[n%16];
n/=16;
}
while(top!=-1)
printf("%c",s[top--]);
printf("\n");
}
int main()
{
char number[100];
int n=0;
unsigned int i;
scanf("%s",number);
for(i=0;i<strlen(number);i++)
n+=(number[i]-'0')*pow(8,strlen(number)-i-1);
toBinary(n);
toOctonary(n);
toHex(n);
return 0;
}
追问这是8进制转其它进制吗?
追答对,输入一个八进制数,输出依次是2进制,8进制和16进制
转变成10进制的话在toBinary(n)前面加一句printf("%d\n",n)就行了
追问程序有错误啊
追答哪个地方错了?