问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char a[20];
int b[20];
int len,i,k=0;
long long sum=0,sum1;//double sum=0,sum1;
gets(a);
len=strlen(a);
for(i=len-1;i>=0;i--)
{
sum1=0;
if(a[i]>='A'&&a[i]<='F')
{
b[i]=(int)(a[i]-'A'+10);
sum1=b[i]*pow(16,k++);
}
else if(a[i]>='0'&&a[i]<='9')
{
b[i]=(int)(a[i]-'0');
sum1=b[i]*pow(16,k++);
}
sum+=sum1;
}
printf("%lld\n",sum);//printf("%.0lf",sum);
return 0;
}
int就超出范围,可以用long long,也可以用double。