在给定的数组中删除数

img

img

img


题目如图,为什么减去t和没减一样,感觉很奇怪,求指点,到底是为什么,谢谢啦。

a[j]=a[j+1]覆盖目标数的时候数组越界了

修改如下,供参考:

#include<stdio.h>
int main() {
    int n, m, a[20], i, j;
    while (scanf("%d", &n) != EOF) {
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        scanf("%d", &m);
        for (i = j = 0; i < n; i++) {
            if (a[i] - m)
                a[j++] = a[i];
        }
        if (j == 0)       //输出删除m后的数组
            printf(" ");
        else {
            for (i = 0; i < j; i++) 
                printf(i == 0 ? "%d" : " %d", a[i]);
        }
    }
    return 0;
}