八进制整数向二进制,十进制,十六进制整数转换的c语言编程程序

如题所述

#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)就行了

追问

程序有错误啊

追答

哪个地方错了?

温馨提示:答案为网友推荐,仅供参考
相似回答