C语言问题(5),哪位可以解释一下?

来源:百度知道 编辑:UC知道 时间:2024/06/10 16:52:36
有关数组的删除问题~:
#include<stdio.h>
main()
{int a[6]={12,2,34,2,74,32},i,j,x,n=0;
printf("please input a number:\n");
scanf("%d",&x);
for(i=0;i<=5;i++)
if(a[i]==x)
{for(j=i+1;j<=5;j++)
a[j-1]=a[j];
n++;
i--;}
if(n!=0)
for(j=0;j<6-n;j++)
printf("%-5d",a[j]);
else
printf("no found");
getch();
}

我这里开始不懂:if(a[i]==x)
{for(j=i+1;j<=5;j++)
a[j-1]=a[j];
n++;
i--;}
if(n!=0)
for(j=0;j<6-n;j++)
printf("%-5d",a[j]);
哪位可以解释一下?

if(a[i]==x)//判断输入的X是否和定义的数组中的其中一个相等
{for(j=i+1;j<=5;j++)//这个循环从i+1开始,将后一个数赋给前一个数,填补删掉的空位置
a[j-1]=a[j];
n++;//累加删除的个数
i--;//因为已经有被删除的,所以减少数组的个数}
if(n!=0)//判断是否已有数被删除
for(j=0;j<6-n;j++)//输出删除后的数组
printf("%-5d",a[j]);