题解 | #进制转换#

进制转换

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

//相对简单的思路
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char arr[32] = "";
    scanf("%s", arr);
    int sz = strlen(arr), i = 0, num = 0, a = 0, sq = 1;
  //从后往前一位一位计算相加
    for (a = sz - 1; a >= 0; a--)
        {
	  //从倒数第二位开始乘16的次方
        if (a < sz - 1)
        {
            sq *= 16;
        }
            if ((arr[a] >= 'A')&&(arr[a] <= 'Z'))
            {
                i = arr[a]-'A'+10;
			  //也可以直接用num+=i*sq,此处为了和下面数字字符写法统一
                num += (i % 16) * sq;
            }
            else if ((arr[a] >= '0') && (arr[a] <= '9'))
            {
			  //可以尝试用atoi获取整型
                i = arr[a]-'0';
                num += (i % 10) * sq;
            }
        }
    printf("%d\n", num);
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-14 11:05
谦虚的小冤种在加班:确实烂白菜,当年本科毕业字节给给开了66*15,哥们都不带看一眼的😋
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务