Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2545783
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-06 09:37:58

    打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行,每一列和对角和均相等。例如,三阶魔方阵为
8     1     6
 
3     5     7 
 
4     9     2
要求打印出由1到n平方的自然数构成的魔方阵。
我在baidu上找了魔方阵的一些资料,里面也说了怎么去做,可自己的能力,还是有限,不能编写代码。我在网上找了个代码,经过调试,可以正常运行。这个东西,自己再慢慢的研究。代码如下:
 

#include<stdio.h>
#define N 20

int main(int argc, int *argv[])
{
  int a[N][N];
  int n,i,j,r;
  scanf("%d",&n);
  
  for(i=0;i<N;i++)
  {
    for(j=0;j<N;j++)
    {
        a[i][j]=0;
    }
  }
  
  i=0;
  j=n/2;
  a[i][j]=1;
  for (r=2;r<=n*n;r++)
  {
    if (a[(i+n-1)%n][(j+1)%n]==0)
    {
       i=(i+n-1)%n;j=(j+1)%n;
       a[i][j]=r;
    }
    else
    {
         i=(i+1)%n;
         a[i][j]=r;
    }
  }
  
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
    {
        printf("%4d",a[i][j]);
    }
    printf("\n");
  }
  system("pause");
  return 0;
}


阅读(1426) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~