这样输入a[0]=7,a[1]=8;
z=8;
a[1]中的元素没有消除,输出结果等于742;
你这个i=0时,没进if;
i=1时,a[i]==z进入if,然后进for内 j=i=1,那a[j]=a[j+1] 就是a[1]=a[2] 这没越界吗?
for循环里写的不对,肯定是越界了,再一个for里面的赋值什么意思?用笔画下,自己再看看
数组的长度值需是动态变化的,修改如下,供参考:
#include <stdio.h>
#define N 2
int main()
{
int i, j, z, n = N;
int a[N];
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &z);
for (i = 0; i < n; i++)
{
if (a[i] == z)
{
for (j = i; j < n - 1; j++)
a[j] = a[j + 1];
n--;
}
}
for (i = 0; i < n; i++)
printf("%d", a[i]);
return 0;
}