C++實例(打印1到n^2的自然數(shù)構(gòu)成的魔方陣)

字號:

#include"stdio.h"
    void main(void)
    {
    int a[15][15]={0};
    int i,j,k,n,p=1;
    while(p==1) //參數(shù)p的設(shè)置,考試.大提示確定n輸入范圍
    {
    printf("請輸入一個奇數(shù)n(1到15之內(nèi)):");
    scanf("%d",&n);
    if((n>0) && (n<=15) && (n%2!=0)) //魔方陣的階數(shù)應(yīng)為奇數(shù)
    p=0;
    }
    /////////////建立魔方陣
    j=n/2;
    a[0][j]=1; //把“1”放在第一行中間一列上
    i=0;
    j=n/2;
    for(k=2;k<=n*n;k++)
    {
    i=i-1;
    j=j+1;
    if(i<0)
    i=n-1;
    if(j>(n-1))
    j=0;
    a[i][j]=k;
    if(k%n==0) //當(dāng)這時插入的數(shù)是n的整數(shù)倍時,下一個起點設(shè)為他本列的下一行
    {
    a[++i][j]=++k;
    }
    }
    printf("魔方陣:\n");
    for (i=0;i    {
    for(j=0;j    {
    printf("%4d",a[i][j]);
    }
    printf("\n");
    }
    printf("\n");
    }