c语言写一个函数,输入一个十六进制数,输出相应的十进制数

2024-11-22 10:08:57
推荐回答(2个)
回答1:

#include 

long hex2dec(char *p)

{

long x=0;

    for(;*p;p++)

{

if(*p>='0'&&*p<='9')x=x*16+*p-'0';

 else if(*p>='A'&&*p<='F')x=x*16+*p-'A'+10;

  else if(*p>='a'&&*p<='f')x=x*16+*p-'A'+10;

else 

{

printf("Data error!\n"); 

return -1;

}

}

return x;

}


int main()

{

char s[20];

scanf("%s",s);

printf("%sH=%ldD\n",s,hex2dec(s));

system("pause");

return 0;

}

回答2:

#include
int main()
{   int shiliu(char *x);
    char a[100];
    int b;
printf("please input a 16 figure\n");
gets(a);
b=shiliu(a);
printf("%d\n",b);
return 0;
}
int shiliu(char *x)
{
int n=0;
while(*x != '\0')
    {
        if(*x>='0' && *x<='9')
            n=n*16+ *x-'0';
        if(*x>='a'&& *x<='f')
            n=n*16+ *x-'a'+10;
        if(*x>='A'&& *x<='F')
            n=n*16+ *x-'A'+10;
        x++;
    }
    return (n);
}

输入的时候作为整形输入,处理的时候作为字符型处理,是矛盾的。