我把你的程序改好了,先把源程序复制在下面吧。
#include
#include
#include
#include
int change(char *s,int length)
{
int sum=0;
while(*s!='\0')
{
if(*s>='a' && *s<='f')
{
sum+=(*s-97+10)*(int)pow(16,length-1);
}
else
{
if(*s>='A' && *s<='F')
{
sum+=(*s-65+10)*(int)pow(16,length-1);
}
else
{
if(*s>='0' && *s<='9')
{
sum+=(*s-'0')*(int)pow(16,length-1);
}
else
{
printf("sorry,wrong input\n");
exit(0);
}
}
}
s++;
length--;
}
return sum;
}
void main()
{
char a[81];
int c;
int len;
printf("please input a number (hex):\n");
gets(a);
len=strlen(a);
c=change(a,len);
printf("the number is %d\n",c);
}
在main()函数中输入一个十六进制的数字,然后调用自定义函数change(),如果是0-9和a-f或者A-F的话,就转化成二进制。调用了库函数pow()计算16的n次幂。循环进行结果累加。最后返回结果到主函数中,输出结果,就是十进制数了。运行结果如下,也可以自己跑一下程序,就看到结果了。