用c语言写的其他进制转10进制,输出结果是-nan(ind),哪里错了
#include<stdio.h>
#include<string.h>
#include<math.h>
float Decimal(char num[],int len,int flag,int poi)
{
int i;
int realnum[20];
float sum1 = 0;
float sum2 = 0;
for (i = poi - 1; i >= 0; i--)
{
if (num[i] == 'A')
realnum[i] = 10;
if (num[i] == 'B')
realnum[i] = 11;
if (num[i] == 'C')
realnum[i] = 12;
if (num[i] == 'D')
realnum[i] = 13;
if (num[i] == 'E')
realnum[i] = 14;
if (num[i] == 'F')
realnum[i] = 15;
else
realnum[i] = num[i] - '0';
sum1 = sum1 + realnum[i] * pow(flag, (poi - i-1));
}
for (i = poi + 1; i < len; i++)
{
if (num[i] == 'A')
realnum[i] = 10;
if (num[i] == 'B')
realnum[i] = 11;
if (num[i] == 'C')
realnum[i] = 12;
if (num[i] == 'D')
realnum[i] = 13;
if (num[i] == 'E')
realnum[i] = 14;
if (num[i] == 'F')
realnum[i] = 15;
else
realnum[i] = num[i] - '0';
sum2 = sum2 + realnum[i] * pow(flag, (poi - i));
}
return sum1 + sum2;
}
float NoDecimal(char num[], int len, int flag)
{
int i;
int realnum[20];
float sum=0;
for (i = len - 1; i >= 0; i--)
{
if (num[i] == 'A')
realnum[i] = 10;
if (num[i] == 'B')
realnum[i] = 11;
if (num[i] == 'C')
realnum[i] = 12;
if (num[i] == 'D')
realnum[i] = 13;
if (num[i] == 'E')
realnum[i] = 14;
if (num[i] == 'F')
realnum[i] = 15;
else
realnum[i] = num[i] - '0';
sum = sum + realnum[i] * pow(flag, (len - i - 1));
}
return sum;
}
float Change_to_10(int flag)
{
int len,i;
float result1, result2;
char num[20];
printf("请输入你要转换的%d进制数\n", flag);
scanf("%f", num);
len = strlen(num);
for (i = 0; i < len; i++)
{
if (num[i] == '.')
{
result1 = Decimal(num, len, flag,i);
return result1;
break;
}
else
{
result2 = NoDecimal(num, len, flag);
return result2;
break;
}
}
}
int main()
{
int flag;
float a;
scanf("%d", &flag);
a=Change_to_10(flag);
printf("转化成10进制数是%f", a);
return 0;
}