就是这种效果,思考了许久,终于做出来了,分享下~~
源码如下,已在vc6++中编译通过
#include <stdio.h>
#define N 100
void main()
{
int n;
printf(“//———-让n阶矩阵的1到n*n的数字按顺时针回字输出\n”);
printf(“//———-n的最大为100\n”);
printf(“输入n:”);
scanf(“%d”,&n);
int i,j,k,g;
int s=n*n;
int a[N][N];
printf(“a[%d][%d]中的值:”,n,n);
/*往数组中赋值*/
for(k=0,g=0;k<=(n/2);k++,g++)
{
for(i=k,j=g;j<n-g;j++) //横着左右
{
if (i==0&&j==0)
a[i][j]=1;
else
a[i][j]=a[i][j-1]+1;
printf(“%d”,a[i][j]);
printf(” “);
}
for(i=k+1,j=n-g-1;i<n-k;i++) //竖着上下
{
a[i][j]=a[i-1][j]+1;
printf(“%d”,a[i][j]);
printf(” “);
}
for(i=n-1-k,j=n-1-g-1;j>=g;j–) //横着右左
{
a[i][j]=a[i][j+1]+1;
printf(“%d”,a[i][j]);
printf(” “);
}
for(i=n-1-k-1,j=g;i>k;i–) //竖着下上
{
a[i][j]=a[i+1][j]+1;
printf(“%d”,a[i][j]);
printf(” “);
}
}
printf(“\n”);
printf(“\n”);
/* 把数组的值输出为n行n列*/
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf(“%3d”,a[i][j]);
}
printf(“\n”);
}
}