可能会有疑问的点:想要删除数组中的相同数据,为什么要从最后两项开始,这个也很好理解,如果从头开始删,还要把后面的元素移位置补前面的位置,但是如果直接从后面开始删相同元素,就不需要上述的步骤了。
补充%4d的知识:这个4即输出四位整形数,不够4位右对齐。
# define M 10
main()
{ int a[M],i,j,n;
for(i=0;i<M;i++)
scanf("%d",a+i);
n=i=M-1;//从最后两项开始比
while(i>=0)
{
if(*(a+i)==*(a+i-1))//从最后两项开始比较
{
for(j=i; j<=n;j++)
*(a+j-1)=* (a+j ); //让后一项赋值给前第二项,即删除了后一项
n--;
i--;
}
for(i=1;i<=n+1;i++)
{
printf("%4d",*(a+i-1));
if(i%4==0)//四个元素为一行进行打印
printf("\n");
}
printf("\n");
}
运行结果: