软考教材分享:程序员考试全真模拟试题及分析与解答(第3版)(4)

2025-11-18

程序员 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 #define MAX 15 void main() { int n; int m=1; int i,j;

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))


软考教材分享:程序员考试全真模拟试题及分析与解答(第3版)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《中学数学教育学概论》复习思考题

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219