易搜题 > 资格证大类 > 计算机等级 > 问题详情
问题详情

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

【说明】

魔方阵,又叫幻方,在我国古代称为“纵横图”。由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。

奇数阶魔方阵的生成方法如下:

(1)第一个位置在第一行正中。

(2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。

(3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:

8 1 6

3 5 7

4 9 2

了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m, n。其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了 MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。

【程序】

include <stdio.h>

define MAX 15

void main()

{

int n;

int m=1;

int i,j;

int a[MAX][MAX];

printf("Please input the rank of matrix:");

scanf("%d",&n);

i=0;

(1)

while((2))

a[i][j]=m;

m++;

i--;

j++;

if((m-1)%n==0 && m>1)

{

(3)

j=j-1;

}

if(j>(n-1)) //超出上界

(4)

if(j>(n-1))

(5)

}

for(i=0;i<n;i++) //输出魔方阵

for(j=0;j<n;j++)

{

if(a[i][j]/10==0)

printf("%d ",a[i][j]); //对程序无影响,只是使输出的数每一列对齐

else

printf("%d ",a[i][j]);

if(j==(n-1))

printf("\n");

}

}

相关标签: 自然数  

未找到的试题在搜索页框底部可快速提交,在会员中心"提交的题"查看可解决状态。 收藏该题
查看答案

相关问题推荐

  • 不能连续取值,只能以自然数表示的数据,称为()

    A、自然数数据

    B、算术值数据

    C、计数值数据

    D、计量值数据

  • 有以下程序main(){inti,s=0;for(i=1;i<l0;i+=2)s+=i+1printf("%d\n",s);}程序执行后的输出结果是______。

    A.自然数1~9的累加和

    B.自然数1~10的累加和

    C.自然数1~9中奇数之和

    D.自然数1~10中偶数之和

  • (1)请你写出不超过30的自然数中的质数之和.(2)请回答,千位数是1的四位偶自然数共有多少个?(3)一个四位偶自然数的千位数字是1,当它分别被四个不同的质数去除时,余数也都是1,试求出满足这些条件的所有自然数,其中最大的一个是多少?
联系客服 会员中心
TOP