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

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

#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");
}