问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535

//错误出现在temp,sum,的基本类型

#include <stdio.h>

#include <string.h>
#define N 10000


int main()
{
char str1[N];//str1用来表示十六进制
int n,i,j;
//printf("请输入n的值\n");
scanf("%d",&n);
while(n--)
{
memset(str1,0,sizeof(str1));
scanf("%s",str1);
int strlength1;
long long sum,temp;
strlength1=strlen(str1);
sum=0;//置为0
for(i=0;i<strlength1;i++)
{
if(str1[i]=='A')
temp=10;
else if(str1[i]=='B')
temp=11;
else if(str1[i]=='C')
temp=12;
else if(str1[i]=='D')
temp=13;
else    if(str1[i]=='E')
temp=14;
else if(str1[i]=='F')
temp=15;
else
temp=str1[i]-'0';//全部使用if语句与使用else if是有差别的
for(j=i;j<strlength1-1;j++)
{
temp=temp*16;
}
sum=sum+temp;
}
printf("%I64d\n",sum);
}
return 0;
}