c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二

学习 时间:2026-03-30 15:08:58 阅读:1023
c语言 4阶魔方数(每行每列对角线和都相等,每个数不一样从1到16),推广到n阶)高手指点一二

最佳回答

害羞的学姐

寒冷的冥王星

2026-03-30 15:08:58

  #include<stdio。h>#define N 5int main(void){ int i,j,key; int square[N+1][N+1]={0}; i=0; j=(N+1)/2; for(key=1;key<=N*N;key++) {  if((key%N)==1)   i++;  else  {   i--;   j++;  }  if(i==0)   i=N;  if(j>N)   j=1;  square[i][j]=key; } for(i=1;i<=N;i++) {  for(j=1;j<=N;j++)   printf("%2d  ",square[i][j]);  printf("\n"); } return 0;}   再问: 注意是4阶。。。 再答: #include <stdio。h> #include <stdlib。h> #define N 4int main(void) {     int i, j;     int square[N+1][N+1] = {0};    for(j = 1; j <= N; j++) {         for(i = 1; i <= N; i++){             if(j % 4 == i % 4 || (j % 4 + i % 4) == 1)                 square[i][j] = (N+1-i) * N -j + 1;             else                 square[i][j] = (i - 1) * N + j;         }     }     for(i = 1; i <= N; i++) {         for(j = 1; j <= N; j++)             printf("%2d ", square[i][j]);         printf("\n");     }     return 0; }

最新回答共有2条回答

  • 热情的冰淇淋
    回复
    2026-03-30 15:08:58

      #include<stdio。h>#define N 5int main(void){ int i,j,key; int square[N+1][N+1]={0}; i=0; j=(N+1)/2; for(key=1;key<=N*N;key++) {  if((key%N)==1)   i++;  else  {   i--;   j++;  }  if(i==0)   i=N;  if(j>N)   j=1;  square[i][j]=key; } for(i=1;i<=N;i++) {  for(j=1;j<=N;j++)   printf("%2d  ",square[i][j]);  printf("\n"); } return 0;}   再问: 注意是4阶。。。 再答: #include <stdio。h> #include <stdlib。h> #define N 4int main(void) {     int i, j;     int square[N+1][N+1] = {0};    for(j = 1; j <= N; j++) {         for(i = 1; i <= N; i++){             if(j % 4 == i % 4 || (j % 4 + i % 4) == 1)                 square[i][j] = (N+1-i) * N -j + 1;             else                 square[i][j] = (i - 1) * N + j;         }     }     for(i = 1; i <= N; i++) {         for(j = 1; j <= N; j++)             printf("%2d ", square[i][j]);         printf("\n");     }     return 0; }

上一篇 倪字 怎么组词

下一篇 形容水的四字词语有哪些?