请问一下,输入16进制输出10进制,这样可以实现吗

思路是把十六进制ABCD定义成一个数组,利用a[i]*16^ i算出每一个字母的十进制数存到ret中,用循环再加在sum里面。能不能实现


#include <stdio.h>
int main( )

{
    int A=10; int B=11; int C=12; int D=13;int  E=14;int  F=15;
              //i   0  1 2 3
    char [4]={A,B,C,D}
            // j     1 2 3 4
     int i=0;
     int j=4;     
     int sum;
     int ret;    
     while(i<4,j<5)
     {
         ret=a[i]*16^j-1;
         sum +=ret ;
         i++;j--;
         if(j == -1)
         break;
     }
     printf("%d",sum);     
     return 0;  
}

用%d和%x匹配符做岂不是更快


#include <stdio.h>

int main(void) {
    int a = 0;
    scanf("%x", &a);
    printf("a = %d", a);
    return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <math.h> //修改
int main( )

{
     int A=10; int B=11; int C=12; int D=13;int  E=14;int  F=15;
              //i   0  1 2 3
     char a[4]={'A','B','C','D'}; //修改
            // j     1 2 3 4
     int i=0;
     int j=4;
     int sum = 0 ;
     int ret;
     while(i<4 && j<5)  //(i<4,j<5)//修改
     {
         ret=(a[i]-'A'+ 10)*pow(16,j-1); //16^j-1;//修改
         sum +=ret ;
         i++;j--;
         //if(j == -1) //修改
         //break;      //修改
     }
     printf("%d",sum);
     return 0;
}