看不懂,这个问题的代码,有哪位大神能跟我解释一下吗?理解不了
对稀疏数组a[20](所谓稀疏数组,即有若干数组元素值为0的数组),编写一个程序,将所有非零元素值按紧密排列形式转移到数组的前端。(要求:程序中不再开辟其它的单元作为数组元素值的缓存单元)。#include <stdio.h>
void main()
{
int a[20]={0,0,1,0,2,0,0,0,3,4,0,0,0,0,0,5,0,0,6,0};
int i,j,k;
for(i=0;i<20;i++)
printf("%3d",a[i]);
printf("\n");
for(i=1;i<20;i++)
{
if(a[i]==0) continue;
for(k=i-1;k>=0;k--)
if(a[k]!=0) break;
if(k==i-1) continue;
a[k+1]=a[i];
a[i]=0;
}
for(i=0;i<20;i++)
printf("%3d",a[i]);
printf("\n");
}
中间这一段有点稀里糊涂的,很懵逼
for(i=1;i<20;i++)
{
if(a[i]==0) continue;
for(k=i-1;k>=0;k--)
if(a[k]!=0) break;
if(k==i-1) continue;
a[k+1]=a[i];
a[i]=0;
有哪位大神能跟我解释一下吗?