题目要求:例如输入一个4,则输出如下图形:
|
1 |
12 |
11 |
10 |
|
2 |
13 |
16 |
9 |
|
3 |
14 |
15 |
8 |
|
4 |
5 |
6 |
7 |
#include <stdio.h>
void main()
...{
int i,j,k,n,a[20][20];
k=1;
scanf("%d",&n);
for(i=1;i<=n/2;i++)
...{
for(j=i;j<=n-i;j++) //左边
...{
a[j][i]=k;
k=k+1;
}
for(j=i;j<=n-i;j++) //下面
...{
a[n-i+1][j]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j--) //右边
...{
a[j][n-i+1]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j--) //上面
...{
a[i][j]=k;
k=k+1;
}
}
if(n%2==1) //如果n是奇数
...{
i=(n+1)/2;
a[i][i]=n*n;
}
for(i=1;i<=n;i++) //输出
...{
printf(" ");
for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
}
printf(" ");
} 

方法二:
#include <stdio.h>
void main()
...{
int a[20][20],i,j,k,x,n,b[20],y,t;
b[0]=0;
b[1]=1;
scanf("%d",&n);
k=n;
x=1;
t=1;
while(x<=n*n)
...{
for(y=1;y<=2*k-1;y++)
...{
b[y/(k+1)]=b[y/(k+1)]+t;
a[b[0]][b[1]]=x;
x++;
}
k--;
t=-t;
}
for(i=1;i<=n;i++)
...{
printf(" ");
for(j=1;j<=n;j++)
printf("%d",a[i][j]);
}
}
该博客介绍了如何使用C语言编程实现回转填数,即根据输入的数字生成特定的图形排列。内容中可能详细讲解了算法思路及代码实现过程。
1782

被折叠的 条评论
为什么被折叠?



