十六进制转十进制。。请问这个为什么运行错误。
#include<stdio.h>#include<string.h>
#include<math.h>
int main()
{
char a[10];
int tra(char b[10]);
gets(a);
printf("十进制是:%d\n",tra(a));
}
int tra(char b[10])
{
int i,j,x;
j=strlen(b);
for (i=0;i<j;i++)
switch (b[i])
{
case '0': x=x+0*16*pow(10,j-i-1);break;
case '1': x=x+1*16*pow(10,j-i-1);break;
case '2': x=x+2*16*pow(10,j-i-1);break;
case '3': x=x+3*16*pow(10,j-i-1);break;
case '4': x=x+4*16*pow(10,j-i-1);break;
case '5': x=x+5*16*pow(10,j-i-1);break;
case '6': x=x+6*16*pow(10,j-i-1);break;
case '7': x=x+7*16*pow(10,j-i-1);break;
case '8': x=x+8*16*pow(10,j-i-1);break;
case '9': x=x+9*16*pow(10,j-i-1);break;
case 'a':
case 'A': x=x+10*16*pow(10,j-i-1);break;
case 'B':
case 'b': x=x+11*16*pow(10,j-i-1);break;
case 'c':
case 'C': x=x+12*16*pow(10,j-i-1);break;
case 'd':
case 'D': x=x+13*16*pow(10,j-i-1);break;
case 'e':
case 'E': x=x+14*16*pow(10,j-i-1);break;
case 'f':
case 'F': x=x+15*16*pow(10,j-i-1);break;
default:printf("error");
}
return x;
}