给定n,有数列A[n]={0,1,2,…,n-1};
给定i,得到新数列B[n-1]={i-1,i+1,i-2,i+2,…,i-k,i+k,…}。当i-k<0时,则将A中剩余的数升序排列。当i+k>n时,将A中剩余的数降序排列。
题意说明:
#include<stdio.h>
#define i 5
#define n 9
int main()
{
int tab[n-1]={0};
int j=0;
int k,m;
for(k=1;k<n;k++)
{
if(i-k>=0&&i+k<n)
{
tab[j++]=i-k;
tab[j++]=i+k;
}
else
break;
}
if(i-k<0)
{
for(m=i+k;m<n;m++)
tab[m-1]=m;
}
else
{int l=i-k;
for(m=2*k-2;m<n;m++)
tab[m]=l--;
}
for(j=0;j<n-1;j++)
{
printf("%3d",tab[j]);
}
printf("\n");
return 0;
}
结果: