16进制转10进制(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/30 02:14:09
输入一个字符串,如:H1AX-B2.8Y?302,将其中连续的十六进制数字字符串转换成等价的十进制一次存放到一个数组a中。如1A转换成26放在a[1],-B2.8转换成-178.5放在a[2],……统计共有多少个数,并输出这些数。(假设所有转换后的数都在实数范围内)。(此题为初中组所做)。

/*刚刚忘了小数点~~*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#define MAXSIZE 20 /*串最大长度*/
#define RADIX 16 /*基数*/
int main()
{
char source[MAXSIZE];
float result[MAXSIZE/2] = {0}; /*数组长度不会超过串长度的一半*/
int sign = 1; /*正负号*/
int precision = -1; /*小数位数*/
int i,j;
gets(source);
printf("%s\n",source);
for(i=0, j=0;i<=strlen(source); i++)
{
switch(source[i]) /*可以使用if语句替换但这样效率更高*/
{
case '.':
precision = 0;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': /*计算结果*/
if(precision != -1)
precision++;
result[j] = result[j] * RADIX +(source[i]-'0');
brea