程序员 http://www.educity.cn/jiaocheng/zg14.html
奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。 【C函数2】
void Smove(int A[], int n) { int temp, i = 0, j = n-1; if(n < 2)return; while(i < j){
if(A[i] % 2 == 1 && A[j] % 2 == 1){ (3) ;} else if(A[i] % 2 == 0 && A[j] % 2 == 0){ (4) ;} else{ if( (5) ){
temp = A[i]; A[i] = A[j]; A[j] = temp; } i++,j--; } } }
1.2.3 试题三
阅读以下说明、C 函数和问题,将解答填入答题纸的对应栏内。 【说明】
二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树: ● 若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;
程序员 http://www.educity.cn/jiaocheng/zg14.html
● 若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值; ● 左、右子树本身就是二叉查找树。
设二叉查找树采用二叉链表存储结构,链表结点类型定义如下: typedef struct BiTnode{
int key_value; /*结点的键值,为非负整数*/ struct BiTnode *left,*right; /*结点的左、右子树指针*/ }*BSTree;
函数find_key(root, key)的功能是用递归方式在给定的二叉查找树 (root指向根结点)中查找键值为key的结点并返回结点的指针;若找不到,则返回空指针。 【函数】
BSTree find_key(BSTree root, int key) {
if ( (1) ) return NULL; else
if (key == root-> key_value) return (2) ;
else if (key < root -> key_value) return (3) ; else
return (4) ;
程序员 http://www.educity.cn/jiaocheng/zg14.html
}
【问题1】
请将函数find_key中应填入(1)~(4)处的字句写在答题纸的对应栏内。 【问题2】
若某二叉查找树中有n个结点,则查找一个给定关键字时,需要比较的结点个数取决于 (5) .
1.2.4 试题四
阅读以下说明和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
程序员 http://www.educity.cn/jiaocheng/zg14.html
4 9 2
了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m,n.其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。 【程序】
#include
int a[MAX][MAX];
printf(\); scanf(\); i=0; (1)
while((2)) {
a[i][j]=m;
程序员 http://www.educity.cn/jiaocheng/zg14.html
m++; i--; j++;
if( (m-1)%n==0 && m>1 ) { (3) j=j-1; }
if(i<0) //超出上界 (4)
if( j>(n-1) ) //超出右边界 (5) }
for(i=0;i if(a[i][j]/10==0) printf(\ \); //对程序无影响,只是使输出的数每一列对齐 else printf(\ \); if(j==(n-1))

