注册 登录
编程论坛 C语言论坛

十六进制转十进制的C语言。结果总和实际结果相差个位数菜鸟已头秃

新手714 发布于 2020-04-26 00:26, 1201 次点击
#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;
}



3 回复
#2
forever742020-04-26 00:35
多加了一次,
u=c+h[l-1];
是多余的。
#3
新手7142020-04-26 00:35
回复 楼主 新手714
已解决
#4
新手7142020-04-26 00:37
回复 2楼 forever74
多谢,刚刚也在看找到了
1