|
发表于 2023-12-11 20:25:38
|
显示全部楼层
本楼为最佳答案
- #include <stdio.h>
- int main(){
- int N; //待输入的正奇数
- int i,j,m,n,s,t;
-
- printf("请输入一个正奇数:");
- scanf("%d",&N);
- int matrix[N][N];
- for (i = 0; i<N; i++){ //初始化matrix
- for (j = 0; j<N; j++){
- matrix[i][j] = 0;
- }
- }
- matrix[0][N/2] = 1;
- m = 0; n = N/2;
- for (i = 2; i<= N*N; i++){
- s = m - 1;
- t = n + 1;
- if (s < 0){
- s = N-1;
- }
- else if (s >= N)
- {
- s = 0;
- }
-
- if (t < 0 ){
- t = N-1;
- }
- else if (t >= N){
- t = 0;
- }
- if ((matrix[s][t] != 0) || (s == 0 && t == N-1 && matrix[s][t] != 0)){
- s = m+1; t = n;
- matrix[s][t] = i;
- }
- else{
- matrix[s][t] = i;
- }
- m = s; n = t;
-
- }
- printf("%d阶幻方为:\n",N);
- for (i = 0; i<N; i++){
- for (j = 0; j<N; j++){
- printf("%d\t",matrix[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
希望能有帮助 |
|