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

下面的代码为什么不出结果呀?


#include <stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    char change(char array[]);
    char a[10];
    gets(a);
    printf("%d",change(a));
    return 0;
 } 
char change(char array[])
 {
     int i,num,sum=0;
     for(i=strlen(array)-1;i>=0;i--)
         {switch(array[i])
             {
                 case'A':case'a':num=10;break;
                 case'B':case'b':num=11;break;
                 case'C':case'c':num=12;break;
                 case'D':case'd':num=13;break;
                 case'E':case'e':num=14;break;
                 case'F':case'f':num=15;break;
                 default:num=array[i]; 
             }
            sum+=num*pow(16,(strlen(array)-1-i));
         }
    return sum;
    
 }

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int change(char array[]);
    char a[10];
    gets(a);
    printf("%d",change(a));
    return 0;
 }
int change(char array[])
 {
     int i,num,sum=0;
     for(i=strlen(array)-1;i>=0;i--)
         {switch(array[i])
             {
                 case'A':case'a':num=10;break;
                 case'B':case'b':num=11;break;
                 case'C':case'c':num=12;break;
                 case'D':case'd':num=13;break;
                 case'E':case'e':num=14;break;
                 case'F':case'f':num=15;break;
                 default:num=array[i]-'0';
             }
            sum+=num*pow(16,(strlen(array)-1-i));
         }
    return sum;
 }