题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

// 思路:从第二位依次提取字符的每一位转化为十进制数
// 再分别与16相乘,相乘的次数取决于位数



#include <stdio.h>
#include <string.h>

// 提取字符转换为十进制
int Changenum(char a)
{
    int b = 0;
    if (a >= 'a' && a <= 'f')
    {
        b = a - 'a' + 10;
    }
    else if (a >= 'A' && a <= 'F')
    {
        b = a - 'A' + 10;
    }
    else if (a >= '0' && a <= '9')
    {
        b = a - '0';
    }
    return b;

}

int main() {
    char str[10] = { 0 };// 0<n<2^31-1
    gets(str);
    int sum = 0;
    int len = strlen(str);

    for (int i = 2; i < len; i++)
    {
        int s=Changenum(str[i]);
        //s=16*s 循环 len -i-1 次
        for (int j = len - i; j > 1; j--)
        {
            
            s = 16 * s;
        }
        sum = sum + s;
        
    }
    printf("%d\n", sum);
    return 0;
}

全部评论

相关推荐

02-15 09:23
已编辑
深圳技术大学 Java
德勤 后端 OC 实习140/天,转正税前7k
恶龙战士:不如码农烧烤
点赞 评论 收藏
分享
kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务