十六进制转十进制的C语言。结果总和实际结果相差个位数菜鸟已头秃
#include<stdio.h>#include<string.h>
void tra(char y[])
{
int i, h[7], b, l, c = 0, u;
l = strlen(y);
for (i = 0; i < l; i++) //这个for循环是将十六进制的字母转换成可计算的数字//
{
if (y[i] >= '0'&&y[i] <= '9')
h[i] = y[i] - '0';
if (y[i] >= 'A'&&y[i] <= 'F')
h[i] = y[i] - '7' ;
else continue;
}
for (i = 0; i < l; i++)
{
for (b = 1; b <= l - 1 - i; b++) //这个for循环是从十六进制第一位开始*16的次方然后累加//
{
h[i] = h[i] * 16;
}
c = c + h[i];
}
u = c + h[l -1];
printf("转换后:%d", u);
}
int main()
{
char y[7];
printf("请输入一个十六进制数:");
gets_s(y);
printf("转换前:%s\n", y);
tra(y);
return 0;
}