螺旋方阵:
#include <stdio.h>
int data[100][100];
void full(int number,int begin,int size)
{
int i,j,k;
if(size == 0) {
return;
}
if(size == 1) {
data[begin][begin] = number;
return;
}
i = begin; j = begin;
for(k = 0; k < size-1;k++) {
data[i][j] = number;
number++; i++;
}
for(k = 0; k < size-1;k++) {
data[i][j] = number;
number++; j++;
}
for(k = 0; k < size-1; k++) {
data[i][j] = number;
number++; i--;
}
for(k = 0; k <size-1; k++) {
data[i][j] = number;
number++; j--;
}
full(number, begin+1, size-2);
}
int main()
{
int size;
printf("请输入数字矩阵阶数:\n");
scanf("%d",&size);
full(1,0,size);
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
if(data[i][j]<10)
printf(" %d ",data[i][j]);
else
printf("%d ",data[i][j]);
printf("\n");
}
return 0;
}
请输入数字矩阵阶数:
5
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
九宫格:
#include <stdio.h>
void function2(int x,int y,int num,int res[])
{
int m=x,n=y;
if(x<0)
m = x+num;
else if(x>=num)
m = x-num;
if(y<0)
n = y+num;
else if(y>=num)
n = y-num;
res[0] = m;
res[1] = n;
}
void function(int num)
{
int arr[num][num];
int i,j;
int k=1;
int x = -num/2;
int y = num/2;
int res[2];
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
if(x<0 || x>=num || y<0 || y>=num)
{
function2(x,y,num,res);
arr[res[0]][res[1]] = k++;
}
else
arr[x][y] = k++;
x++;
y--;
}
x = x - num + 1;
y = y + num + 1;
}
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
printf("%4d ",arr[i][j]);
}
printf("\n");
}
}
int main()
{
int a;
printf("请输入阶数:");
scanf("%d",&a);
function(a);
return 0;
}
请输入阶数:5
3 20 7 24 11
16 8 25 12 4
9 21 13 5 17
22 14 1 18 10
15 2 19 6 23