for循环部分,a[j]=a[j+1]是不是简单的赋值?后面为什么会自动空出一位?

include <stdio.h>
main ()
int a[]={1,2,3,4,5,6,7,8,9,0}, i,j,m,n=10,t;
scanf("%d",&m);
for(=0; i<m; i++)
i{t=a[m-1-i];
fcr(j=m-i; j<n; j++)
a[j-1]=a[j ];
a[n- 1]=t;
}
for(i=0; i<10; i++)
printf("%d",a[i]);
}

a[j]=a[j+1]; 是简单的赋值,把数组元素的值往左搬动一格。
例如:
int a[]={1,2,3,4,5}; int j;
for (j=0;j<4;j++) a[j]=a[j+1];
这里依次执行了 a[0]=a[1];a[1]=a[2];a[2]=a[3];a[3]=a[4];
执行结果 a 数组数据变成 {2,3,4,5,5}。 最后一个元素 a[4] 保持不变。
如果程序是:
int a[]={1,2,3,4,5}; int j,t;
t=a[0]; for (j=0;j<4;j++) a[j]=a[j+1]; a[4]=t;
那么 执行结果 a 数组数据变成 {2,3,4,5,1}。最后一个元素 a[4] 变原 a[0].
温馨提示:答案为网友推荐,仅供参考
相似回答