/*题目:已知a是一个十六进制数的字符串,现将其转换为十进制数并输出。
输出如样张所示。*/
#include <stdio.h>
#include <string.h>
double trans(char a[])
{ int i=0, j, m;
double n, s,x;
s=0.0;
while( a[i]!='.' && a[i]) i++; //确定整数位数
/**********Program**********/
for(j=0;j<i;j++)
{m=a[j];
if(a[j]>='A') m=m-'A'+10;
else m=m-48;
s=s*16+m;}
if(a[i]=='.')
{x=n=1.0/16;
for(j=i+1;a[j];j++)
{
m=a[j];
if(a[j]>='A') m=m-'A'+10;
else m=m-48;
s=s+m*x;
x=x*n;}
}
/********** End **********/
return s;
}
int main()
{ int i=-1;
char a[10];
gets(a);
while(a[++i]){
if (a[i]>='a') a[i] -= 32; // 小写字母字符转换为大写
}
printf("十六进制数%s转换为十进制数为:%f\n",a,trans(a));
return 0;
}