请问十六进制转lo进制这个程序有什么问题


#include 
#include
#include
int main(){
    int i,j,n;
    char s[100];
    scanf("%s",&s);
    for(i=0;i<strlen(s);i++)
    {
    if(s[i]>='A'&&s[i]<='F')
   j=s[i]-'A'+10;
   else if(s[i]>='0'&&s[i]<='9')
   j=s[i]-'0';
   n=n+j*pow(16,i);
   }
   printf("%d",n);
   return 0;
   }
   

n=n+j*pow(16,i); 这是不对的啊。比如输入A2,那A应该乘以16的1次方,但你的代码是16的0次方。另外n没有初始化为0
修改如下:

#include <stdio.h>
#include <string.h>
int main(){
    int i,j,n=0;
    char s[100];
    scanf("%s",&s);
    for(i=0;i<strlen(s);i++)
    {
    if(s[i]>='A'&&s[i]<='F')
   j=s[i]-'A'+10;
   else if(s[i]>='0'&&s[i]<='9')
   j=s[i]-'0';
   n=n*16+j;
   }
   printf("%d",n);
   return 0;