题解 | #十六进制转十进制#

十六进制转十进制

http://www.nowcoder.com/practice/33e148570d5c4e728116e2f861638c9c

这道题一共有两种思路: 思路一: 直接将十六进制数字赋值到a

int main() 
 {
    int a = 0xABCDEF;
    printf("%15d", a);
}

思路二:比较简单,利于理解,但步骤比较复杂,这种方法的难点在于输出时pow的调用中i与实际间的关系!!!

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(void)
{
    char arr[] = "ABCDEF";
    int i = 0, j = 0;
    double sum = 0.0;
    char ch = arr[0];
    int num[10] = { 0 };
    int n = strlen(arr);
    int m = 0;
    while (ch != '\0')
    {
        ch = arr[i];
        switch (ch)
        {
        case 'A':num[j] = 10;
            break;
        case 'B':num[j] = 11;
            break;
        case 'C':num[j] = 12;
            break;
        case 'D':num[j] = 13;
            break;
        case 'E':num[j] = 14;
            break;
        case 'F':num[j] = 15;
            break;
        default: break;
        }
        if (num[i] != 0)
        {
            i++;
            j++;
        }
    }
    for (i = n-1; i >=0; i--)
        sum += num[i] * pow(16,n-1-i);
    m = (int)sum;
    printf("%15d", m);
    return 0;
}
全部评论
第二种思路一般在python用的多一点,c语言建议第一种
2 回复 分享
发布于 06-02 17:01 浙江
总结:法一直接利用C语言里面转义字符的知识求出,法二是通过16进制转换成10进制,分别求出ABCDE各位数上的值,然后再相加。
1 回复 分享
发布于 2022-08-25 09:24 江苏
太优秀了
点赞 回复 分享
发布于 2022-04-28 23:11
牛逼
点赞 回复 分享
发布于 2023-10-31 21:23 广东
第一个%15d的15是为啥啊,咋知道15,求大佬解释
点赞 回复 分享
发布于 10-25 21:56 山西

相关推荐

点赞 评论 收藏
分享
52 10 评论
分享
牛客网
牛客企业服务