Mirral_qwq
2020-06-03 21:09
采纳率: 100%
浏览 399

华为数通c++校招笔试题

IPV4:十进制ip地址输入转换成十六进制输出。图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 卡卡莫莱维 2020-06-03 21:42
    已采纳
    #include<iostream>
    using namespace std;
    int main()
    {
        char p[16];
        int array[4];
        int num = 0;
        cin >> p;
        for (int i = 0; i <= 16; i++)
        {
            if (num == 3)
            {
                array[num] = p[i] - 48;
                if (p[i + 1] - 48 <= 9 && p[i + 1] - 48 >= 0)
                {
                    array[num] = array[num] * 10 + (p[i + 1] - 48);
                    if (p[i + 2] - 48 <= 9 && p[i + 2] - 48 >= 0)
                    {
                        array[num] = array[num] * 10 + (p[i + 2] - 48);
                    }
                }
                num++;
                break;
            }
            if (p[i] == '.')
            {
                if (p[i - 1] != '.'&&i - 1 >= 0)
                {
                    array[num] = p[i - 1] - 48;
                    if (p[i - 2] != '.'&&i - 2 >= 0)
                    {
                        int tem = array[num] + (p[i - 2] - 48) * 10;
                        array[num] = tem;
                        if (p[i - 3] != '.'&&i - 3 >= 0)
                        {
                            array[num] = array[num] + (p[i - 3] - 48) * 100;
                        }
                    }
                }
                num++;
            }
        }
        printf("%X.%X.%X.%X\n", array[0], array[1], array[2], array[3]);
        system("pause");
    }
    
    点赞 打赏 评论

相关推荐 更多相似问题