C ++インタビューの質問(1)

1、リストの逆転

    私の以前のインタビューの質問が関連している、書いていません

図2に示すように、第二の最大数を見つけるために、アレイ機能を達成するために(キーポイント- 最初の二つは、最大数から保存されてきます)

//找出第二大的数
int search_sec(int *arr, int len)
{
    int ret[2] = { 0,0 };
    for (int i = 0; i < len; ++i)
    {
        if (arr[i] > ret[0])
        {
            ret[1] = ret[0];
            ret[0] = arr[i];
        }
        else if (arr[i] > ret[1])
        {
            ret[1] = arr[i];
        }
    }
    return ret[1];
}

図3に示すように、機能を達成するために、最初の16ビット整数が整数あたり4ビットに応じて加算される(テストサイト、シフト操作

//位运算
int test(int a)
{
    int temp;
    int count = 0;
    for (int i = 0; i < 4; ++i)
    {
        temp = a >> i * 4;
        count += temp & 0x000F;
    }
    return count;
}

4、出力要求

    union
    {
        int a;
        char b[2];
    }aa;
    aa.a = 0;
    aa.b[0] = 10;
    aa.b[1] = 1;
    printf("%d",aa.a);

出力は266です

分析:米国AAは、メモリ10の4つのバイトを順次占める1,0,0

これは、int型0,0,1,10と解釈されます

1は256であり、出力は、256 + 10であります

おすすめ

転載: blog.csdn.net/Think88666/article/details/92010267