问题描述
从键盘输入一个不超过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。