阅读以下说明和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、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则运算后,n的值为 ______。
A.0
B.1
C.2
D.3
设a、b、c、d、m、n均为int型变量,且a=5、b=6、c= 7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n—c> d)运算后,n的值是()n
A.0
B.1
C.2
D.3
设x,y均为int型变量,且x=10,y=3,则printf("%d\n"x-,-y);语句的输出结果是 ______。
A.10,3
B.9,3
C.9,2
D.10,2}
设a和b均为int型变量,且a-6,b=11,则能使值为3的表达式是()
A)b%(a%4)
B)b%(a-a%5)
C)b%a-a%5
D)(b%a)-(a%4)
下列命题正确的是(58)。
A.G为n阶无向连通图,如果G的边数m≥n-1,则G中必有圈
B.二部图的顶点个数一定是偶数
C.若无向图C的任何两个不相同的顶点均相邻,则G为哈密尔顿图
D.3-正则图的顶点个数可以是奇数,也可以是偶数
设阶码8位(最左一位为符号位),用移码表示,尾数为24位(最左一位为符号位),用规格化补码表示,则它所能表示的最大正数的阶码为(27),尾数为(28);绝对值最小的负数的阶码为(29),尾数为(30)。
A.11110000
B.11111111
C.1111
D.0