为什么后面还会有数字补齐十个数?

编写一个函数完成下面的功能:删除一维整型数组a中值大于x小于y的所有元素。要求:数组a(10个元素)的值、x和y在main函数中输入。为什么后面还会有数字补齐十个数?

img

因为数组的长度自声明后是不会变的。
你可以在del()函数返回一个删除元素后的,有效的数组长度。
再最后遍历的时候,遍历这个新的长度就好。


void del(int a[], int x, int y)
{
    int i = 0;
    for (i = 0; i < 10; i++)
    {
        if (a[i]<x || a[i]>y)
        {
            //超出范围就设置为0
            a[i] = 0;
        }

    }
}
int main()
{
    int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);
    del(a, x, y);
    int i = 0;
    for(i = 0; i < 10; i++)
    {
        if (a[i] != 0)//我们就不打印为0的就行
            printf("%4d", a[i]);
    }
    return 0;
}

img