您的位置:首页 > 其它

(下)--螺旋矩阵的打印---由外向内旋转的八种情况

2014-08-07 12:40 155 查看
#include <stdio.h>
#define N 5
int print_array(int (*b)
);
int spin_array(int (*c)
);
int fold_array(int (*d)
);
int main(int argc, const char *argv[])
{

int s

;
int k=0,i=0,j=0;
int a=1;
for(;k<(N+1)/2;k++)
{
while(j < N-k)s[i][j++]=a++;i++;j--;
while(i < N-k)s[i++][j]=a++;i--;j--;
while(j > k-1)s[i][j--]=a++;i--;j++;
while(i > k)s[i--][j]=a++;i++;j++;
}

spin_array(s);
printf("=============================\n");
fold_array(s);
printf("=============================\n");
spin_array(s);
printf("=============================\n");
fold_array(s);
printf("=============================\n");
spin_array(s);
printf("=============================\n");
fold_array(s);
printf("=============================\n");
spin_array(s);
printf("=============================\n");
fold_array(s);
}
int spin_array(int (*c)
)
{
int i,j;
int b

;
int (*p)
=c;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
b[i][j]=p[N-j-1][i];
}
}
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
c[i][j] = b[i][j];
}
print_array(c);
return 0;
}
int fold_array(int (*d)
)
{
int i,j,tmp;
int a

;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=d[i][j];
}
}
for(i=0;i<N;i++)
for(j=0;j<i;j++)
{

tmp = a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
print_array(a);
return 0;
}
int print_array(int (*b)
)
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("%5d",b[i][j]);
if((j+1)%N==0)
putchar('\n');
}
return 0;
}
打印结果:
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: