注意1不是1,要用ASCII码转换,
#include <stdio.h>
#include <math.h>
int main()
{
int i,flag=1,sum=0,num=0,m=0,j;
char ch[100];
char bh[100];
for (i=0;;i++)
{
scanf("%c",&ch[i]);
if (ch[i]=='-' && num == 0) flag = -1;
if ((ch[i]>='0'&&ch[i]<='9')||(ch[i]>='A'&&ch[i]<='F')||(ch[i]>='a'&&ch[i]<='f'))
{
bh[m]=ch[i];
m++;
num++;
}
if (ch[i]=='#') break;
}
bh[m]=0;
for (i=m-1,j=0;i>=0;i--,j++)
{
if (bh[i]>='0'&&bh[i]<='9')
{
sum = sum + (bh[i]-48) * pow (16,j);
}
else if (bh[i]>='a'&&bh[i]<='f')
{
sum = sum + (bh[i]-87)* pow (16,j);
}
else if (bh[i]>='A'&&bh[i]<='F')
{
sum = sum + (bh[i]-55) * pow (16,j);
}
}
sum = sum*flag;
printf("%d",sum);
}