#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;