题解 | #进制转换#

进制转换

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-26 16:52
门头沟学院 Java
Lunarloop:董事长亲自到ssob来要IM项目的技术方案来了
点赞 评论 收藏
分享
云边有个小卖铺儿:校招生违约率低,所以我要高😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务