将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“进制转换”,较为简单,现在将通过的代码贴一下,供大家参考。

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int mihex(int count)
{
int mi=1;
int i =0;
for(i=0;i<count;i++)
{
mi*=16;
}
return mi;
}
int hextodec(char *input)
{
int len = strlen(input);
int i=0;
int sum=0;
for(i=2;i<len;i++)
{
char c = input[i];
//printf('c=%c\n',c);
if(c>='a'&&c<='f')
{
sum += ((c - 'a')+10)*mihex(len-i-1);
}
else if(c>='0'&&c<='9')
{
sum += (c - '0')*mihex(len-i-1);
}
else if(c>='A' && c<='F')
{
sum += ((c - 'A')+10)*mihex(len-i-1);
}
}
return sum;
}
int main()
{
char inputstream[100]={0};
int a;
//fgets(inputstream,sizeof(inputstream),stdin);
//sscanf_s(inputstream,"0x%x",&a);
while(scanf("%s",inputstream)!=EOF)
{
a = hextodec(inputstream);
printf("%d\n",a);
}
}