我不知道如何从存储在另一个数组中的索引元素中清除一个数组。我需要完成以下由main(…)和function组成的C程序

void clear_MSBs( unsigned char dest_array[], unsigned char array_indices []).


代码开头:

#define N 8
#define M 5
int main()
{
    unsigned char dest_array[N] = {248,249,250,251,252,253,254,255};
    unsigned char array_indices[M] = {0,2,3,6,7}; // contains M=5 elements
    clear_MSBs(dest_array, array_indices);
    // print the modified dest_array[] here
    return 0;
}


注意:保证第二个数组中存储的所有索引都在
允许范围。
我将衷心感谢您的帮助。

最佳答案

如果通过清洗,意味着将元素标记为无效(这可能是您想要的),则可以循环遍历indexs数组,然后将indexs数组的第i个元素用作目标数组的索引。

例:

#include <stdio.h>

#define N 8
#define M 5

void clear_MSBs(unsigned char dest_array[], unsigned char array_indices [])
{
    for(int i = 0; i < M; ++i)
        dest_array[array_indices[i]] = 0;
}

int main()
{
    unsigned char dest_array[N] = {248,249,250,251,252,253,254,255};
    unsigned char array_indices[M] = {0,2,3,6,7}; // contains M=5 elements
    clear_MSBs(dest_array, array_indices);
    // print the modified dest_array[] here
    for(int i = 0; i < N; ++i)
        if(dest_array[i] != 0)
            printf("%d ", dest_array[i]);
    printf("\n");
    return 0;
}


输出:


  249252253


PS:代码假定无效元素的值为0。

10-07 16:12
查看更多