资源限制
内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
//char hex[10000000],dec[20000000];
char *hex,*dec;
int i;
unsigned long int sum=0,n;
hex=(char *)malloc(sizeof(char));
scanf("%s",hex);
for(i=0;i<strlen(hex);i++)
{
switch(hex[i])
{
case '0':n=0*pow(16,strlen(hex)-i-1);break;
case '1':n=1*pow(16,strlen(hex)-i-1);break;
case '2':n=2*pow(16,strlen(hex)-i-1);break;
case '3':n=3*pow(16,strlen(hex)-i-1);break;
case '4':n=4*pow(16,strlen(hex)-i-1);break;
case '5':n=5*pow(16,strlen(hex)-i-1);break;
case '6':n=6*pow(16,strlen(hex)-i-1);break;
case '7':n=7*pow(16,strlen(hex)-i-1);break;
case '8':n=8*pow(16,strlen(hex)-i-1);break;
case '9':n=9*pow(16,strlen(hex)-i-1);break;
case 'A':n=10*pow(16,strlen(hex)-i-1);break;
case 'B':n=11*pow(16,strlen(hex)-i-1);break;
case 'C':n=12*pow(16,strlen(hex)-i-1);break;
case 'D':n=13*pow(16,strlen(hex)-i-1);break;
case 'E':n=14*pow(16,strlen(hex)-i-1);break;
case 'F':n=15*pow(16,strlen(hex)-i-1);break;
deflaut:break;
}
sum=sum+n;
}
printf("%lu\n",sum);
return 0;
}