欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】程序员-C语言程序设计(二)及答案解析.doc

    • 资源ID:1336135       资源大小:64.50KB        全文页数:12页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】程序员-C语言程序设计(二)及答案解析.doc

    1、程序员-C 语言程序设计(二)及答案解析(总分:99.99,做题时间:90 分钟)一、试题一(总题数:1,分数:20.00)阅读以下说明、C 程序代码和问题 1 至问题 3,将解答写在对应栏内。说明 1设在某 C 系统中为每个字符型数据分配 1 个字节,为每个整型(int)数据分配 4 个字节,为每个指针分配4 个字节,sizeof(x)用于计算为 X 分配的字节数。C 代码#include stdio.h#include string.hint main()int arr5=(10,20,30);char raystr=“JustAtest/n“;char *ptr=mystr;printf

    2、(“%d%d%d/n“,sizeof(int),sizeof(unsigned int),sizeof(art);printf(“%d%d/n“,sizeof(char),Sizeof(mystr);printf(“%d%d%d/n“,sizeof(ptr),siZeof(*ptr),strlen(ptr);return 0;(分数:20.01)(1).请写出以上 C 代码的运行结果。说明 2const 是 C 语言的一个关键字,可以用来定义“只读”型变量。(分数:6.67)_(2).(1)请定义一个“只读”型的整型常量 size,并将其值初始化为 10;(2)请定义一个指向整型变量 a 的指

    3、针 ptr,使得 ptr 的值不能修改,而 ptr 所指向的目标变量的值可以修改(即可以通过 ptr 间接修改整型变量 a 的值)。注:无需给出整型变量 a 的定义。(分数:6.67)_(3).某 C 程序文件中定义的函数 f 如下所示,请简要说明其中 static 的作用,以及形参表“const int arr”中 const 的作用。StatiC int f(const int art)/*函数体内的语句省略*/(分数:6.67)_二、试题二(总题数:1,分数:20.00)阅读以下说明和 C 函数,填补 C 函数中的空缺。说明函数 numberOfwords(char message)的功

    4、能是计算存储在 message 字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过 20 时仅输出其前 20 个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似 dont形式的词,单词之后都为空格或标点符号。函数中判定单词的规则是:(1)一个英文字母串是单词;(2)一个数字串是单词;(3)表示名词所有格的撇号()与对应的单词看作是一个单词。除上述规则外,其他情况概不考虑。例如,句子“The 1990s witnessed many changes in peoples

    5、concepts of conservation”中有 10个单词,输出如下:The1990switnessedmanychangesinpeoplesconceptsofconservation函数 numberOfwords 中用到的部分标淮库函数如下所述。函数原型 说明int islower(int ch);若 ch 表示一个小写英文字母,则返回一个非 0 整数,否则返回 0int isupper(int ch):若 ch 表示一个大写英文字母,则返回一个非 0 整数,否则返回 0int isalnum(int ch);若 ch 表示一个英文字母或数字字符,则返回一个非 0 整数,否则返

    6、回 0int isabha(int ch);若 ch 表示一个英文字母,则返回一个非 0 整数,否则返回 0int isdigit(int ch);若 ch 表示一个数字字符,则返回一个非 0 整数,否则返回 0C 函数int numberOfwords(char message)char wordbuffer21,i=0; /*i 用作 wordbuffer 的下标*/_pstr;int ps26=(0); /*ps0用于表示字母A或a的频数*/*ps1用于表示字母B或b的频数,依此类推*/int wordcount er=0;Pstr=message;while (*pstr)if(_(*

    7、pstr)/*调用函数判断是否为一个单词的开头字符*/i=0;do/*将一个单词的字符逐个存入 wordbuffer,并对字母计数*/wordbufferi+=*pstr;if(isalpha(*pstr)if_(*pstr)ps*pstr-a+;else ps*pstr-A+;_; /*pstr 指向下一字符*/while(i20(isalnum(*pstr)*pstr=/“);if(i=20) /*处理超长单词(含名词所有格形式)*/while(isalnum(*pstr)*pstr=“)pstr+;_=/0;/*设置暂存在 wordbuffer 中的单词结尾*/wordcounter+;

    8、 /*单词计数*/puts(wordbuffer); /*输出单词*/_; /*pstr 指向下一字符*/return wordcounter;(分数:19.98)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空缺。说明如果矩阵 A 中的元素 Ai,j满足条件:Ai,j是第 i 行中值最小的元素,且又是第 j 列中值最大的元素,则称之为该矩阵的一个马鞍点。一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。C

    9、 函数Int findSaddle(int aN,int M),/*a 表示 M 行 N 列矩阵,N 是宏定义符号常量*/int row,coiumn,i,k;int minElem;int count=0;/*count 用于记录矩阵中马鞍点的个数*/for(row=0;row_;row+) /*minElem 用于表示第 row 行的最小元素值,其初值设为该行第 0 列的元素值*/_;for(culumn=1;column_;column+)if(minElemarowcolumn) minElem=arowcoiumn;for(k=0;kN;k+)if(arowk=minelem)/对第

    10、 row 行的每个最小元素,判断其是否为所在列的最大元素*/for(i=0;iM;i+)if(_minElem)break;if(i=_)printf(“(%d,%d):%d/n“,row,k,minElem);/*输出马鞍点*/count+;/*if*/*if*/*for*/return count,)/*findSaddle*/(分数:20.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空缺。说明函数 Insert _key(*root,key)的功能是将键值 key 插入到*ro

    11、ot 指向根结点的二叉查找树中(二叉查找树为空时*root 为空指针)。若给定的二叉查找树中已经包含键值为 key 的结点,则不进行插入操作并返回0;否则申请新结点、存入 key 的值并将新结点 DHA 树中,返回 1。提示:二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:typedef struct BiTnodeint key _value; /*结点的

    12、键值,为非负整数*/struct BiTnode *left,*right; /*结点的左、右子树指针*/BiTnode,*BSTree;C 函数int Insert _key(BSTree *root,int key)BiTnode *father=NULL,*p=*root,*s;while(_key!=p-key _value)(/*查找键值为 key 的结点*/father=p;if(keyp-key _value)p=_; /*进入左子树*/else p=_; /进入右子树*/if(p) return 0; /*二叉查找树中已存在键值为 key 的结点,无需再插入*/s=(BiTno

    13、de *)malloc(_);/*根据结点类型生成新结点*/if(!s)rettlrn -1;s-key _value=key; s-left=NULL; s-right=NULL;if(!father)_; /*新结点作为二叉查找树的根结点*/else /*新结点插入二叉查找树的适当位置*/if(keyfather-key _value)father-left=s;else father-right=s;return 1;(分数:20.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空

    14、缺。说明已知两个整数数组 A 和 B 中分别存放了长度为 m 和 n 的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前 m 个整数存入 A 中,其余元素依序存入 B 中。例如:合并前 合并后数组 A 的内容 1,9,28 1,4,7数组 B 的内容 4,7,12,29,379,12,28,29,37合并过程如下:从数组 A 的第一个元素开始处理。用数组 B 的最小元素 B0与数组 A 的当前元素比较,若 A 的元素较小,则继续考查 A 的下一个元素;否则,先将 A 的最大元素暂存入 temp,然后移动 A 中的元素挪出空闲单元并将 B0插

    15、入数组 A,最后将暂存在 temp 中的数据插入数组 B 的适当位置(保持 B 的有序性)。如此重复,直到 A 中所有元素都不大于 B 中所有元素为止。C 函数void Adjustment(int A,intB,int m,int n)/*数组 A 有 m 个元素,数组 B 有 n 个元素*/int k,temp;for(i=0;im;i+)if(Ai=B0) continue,temp=_;/*将 A 中的最大元素备份至 temp*/*从后往前依次考查 A 的元素,移动 A 的元素并将来自 B 的最小元素插入 A 中*/for(k=m-1;_;k-)Ak=Ak-1;Ai=_;/*将备份在七

    16、 emp 的数据插入数组 B 的适当位置*/for(k=1;_kn;k+)Bk-1=Bk;Bk-1=_;(分数:20.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_程序员-C 语言程序设计(二)答案解析(总分:99.99,做题时间:90 分钟)一、试题一(总题数:1,分数:20.00)阅读以下说明、C 程序代码和问题 1 至问题 3,将解答写在对应栏内。说明 1设在某 C 系统中为每个字符型数据分配 1 个字节,为每个整型(int)数据分配 4 个字节,为每个指针分配4 个字节,sizeof(x)用于计算为 X 分配的字节数。C 代码#include stdio.

    17、h#include string.hint main()int arr5=(10,20,30);char raystr=“JustAtest/n“;char *ptr=mystr;printf(“%d%d%d/n“,sizeof(int),sizeof(unsigned int),sizeof(art);printf(“%d%d/n“,sizeof(char),Sizeof(mystr);printf(“%d%d%d/n“,sizeof(ptr),siZeof(*ptr),strlen(ptr);return 0;(分数:20.01)(1).请写出以上 C 代码的运行结果。说明 2const

    18、是 C 语言的一个关键字,可以用来定义“只读”型变量。(分数:6.67)_正确答案:(4 4 201 1 14 1 10)解析:(2).(1)请定义一个“只读”型的整型常量 size,并将其值初始化为 10;(2)请定义一个指向整型变量 a 的指针 ptr,使得 ptr 的值不能修改,而 ptr 所指向的目标变量的值可以修改(即可以通过 ptr 间接修改整型变量 a 的值)。注:无需给出整型变量 a 的定义。(分数:6.67)_正确答案:(1)const int size=10;或 int const size=10;(2)int* const ptr=a;)解析:(3).某 C 程序文件中定

    19、义的函数 f 如下所示,请简要说明其中 static 的作用,以及形参表“const int arr”中 const 的作用。StatiC int f(const int art)/*函数体内的语句省略*/(分数:6.67)_正确答案:(static 的作用:说明 f 是内部函数(局部函数),只能在本文件中调用它。const 的作用:在函数 f 中不能修改数组元素的值,若修改,编译时会报错。)解析:本题考查考生对 C 语言中常用关键字的掌握和应用情况。第一题考查 sizeof 运算符,用于计算数据空间的字节数。在第一个输出语句 printf(“%d%d%d/n“,sizeof(int),siz

    20、eof(unsigned int),sizeof(arr)中,由于 int型数据占 4 个字节,因此 sizeof(int)和 sizeof(unsigned int)的值都是 4。art 是整型数组,共有 5 个元素,因此 sizeof(arr)的值为 4*5=20。在第二个输出语句 printf(“%d%d/n“,sizeof(char),sizeof(mystr)中,由于 char 型数据占 1 个字节,因此 sizeof(char)的值是 1。mystr 是一个字符数组,由于其包含 10 个字符,加上字符串结束标志,共11 个字符。因此,其 sizeof 的操作结果为 11。在第三个输

    21、出语句 printf(“%d%d%d/n“,sizeof(ptr),sizeof(*ptr),strlen(ptr)中,ptr 为一个指针,所有指针变量的 sizeof 操作结果均为 4,因此,sizeof(ptr)的值为 4。*ptr 的值为字符J因此sizeof(*ptr)的值为 1。strlen()函数用于计算字符数组中的字符数,以/0作为结束判断条件,不计算/0。因此,strlen(ptr)的值为 10。第二题考查 const 的用法。(1)const 加在 int x 的前面,用来定义一个不可被改变的整型常量 x,这个 x 必须在声明时赋值。因此,定义一个“只读”型的整型常量 siz

    22、e,并将其值初始化为 10,可用语句实现为:const int size=10。(2)题目的描述用于定义 const 指针,即允许通过指针修改数据,但不能修改指针本身,其语法格式为:类型*const p=x。因此,定义一个指向整型变量 a 的指针 ptr,使得 ptr 的值不能修改,而 ptr 所指向的目标变量的值可以修改,可用语句实现为:int* const ptr=a。第三题在题目所给的函数 f 中,static 关键字修饰 f,说明 f 是一个局部函数,只能在本文件中调用它,而其他文件则无法调用。形参表中的 const 关键字表明在函数 f 中不能修改数组 art 元素的值,若修改,编译

    23、时会报错。二、试题二(总题数:1,分数:20.00)阅读以下说明和 C 函数,填补 C 函数中的空缺。说明函数 numberOfwords(char message)的功能是计算存储在 message 字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过 20 时仅输出其前 20 个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似 dont形式的词,单词之后都为空格或标点符号。函数中判定单词的规则是:(1)一个英文字母串是单词;(2)一个数字串是单词;(3)表示名词所有格

    24、的撇号()与对应的单词看作是一个单词。除上述规则外,其他情况概不考虑。例如,句子“The 1990s witnessed many changes in peoples concepts of conservation”中有 10个单词,输出如下:The1990switnessedmanychangesinpeoplesconceptsofconservation函数 numberOfwords 中用到的部分标淮库函数如下所述。函数原型 说明int islower(int ch);若 ch 表示一个小写英文字母,则返回一个非 0 整数,否则返回 0int isupper(int ch):若 c

    25、h 表示一个大写英文字母,则返回一个非 0 整数,否则返回 0int isalnum(int ch);若 ch 表示一个英文字母或数字字符,则返回一个非 0 整数,否则返回 0int isabha(int ch);若 ch 表示一个英文字母,则返回一个非 0 整数,否则返回 0int isdigit(int ch);若 ch 表示一个数字字符,则返回一个非 0 整数,否则返回 0C 函数int numberOfwords(char message)char wordbuffer21,i=0; /*i 用作 wordbuffer 的下标*/_pstr;int ps26=(0); /*ps0用于表

    26、示字母A或a的频数*/*ps1用于表示字母B或b的频数,依此类推*/int wordcount er=0;Pstr=message;while (*pstr)if(_(*pstr)/*调用函数判断是否为一个单词的开头字符*/i=0;do/*将一个单词的字符逐个存入 wordbuffer,并对字母计数*/wordbufferi+=*pstr;if(isalpha(*pstr)if_(*pstr)ps*pstr-a+;else ps*pstr-A+;_; /*pstr 指向下一字符*/while(i20(isalnum(*pstr)*pstr=/“);if(i=20) /*处理超长单词(含名词所有

    27、格形式)*/while(isalnum(*pstr)*pstr=“)pstr+;_=/0;/*设置暂存在 wordbuffer 中的单词结尾*/wordcounter+; /*单词计数*/puts(wordbuffer); /*输出单词*/_; /*pstr 指向下一字符*/return wordcounter;(分数:19.98)填空项 1:_ (正确答案:char*或 unsigned char*)解析:填空项 1:_ (正确答案:isalnum 或 isalpha(*pstr)lisdigit)解析:填空项 1:_ (正确答案:islower 或!isupper)解析:填空项 1:_ (

    28、正确答案:pstr+或其等价形式)解析:填空项 1:_ (正确答案:wordbufferi或*(wordbuffer+i))解析:填空项 1:_ (正确答案:pstr+或其等价形式)解析:本题考查考生利用 C 语言的库函数解决实际问题。第一空处用于声明 pstr,从该函数的第 8 行的 pstr=message 赋值语句可以看出,该处应填入 char*。程序接下来对整个一段英文语句中的所有字符进行循环。第二空处调用函数判断是否为一个单词的开头字符。由于一个单词的开头字符可以是英文字符或数字,因此可调用题目提供的库函数 isalnum 进行判断。因此,第二空处应填入 isalnum。第三空处所在

    29、的程序段实现对字母计数。if(isalpha(*pstr)用于判断是否为英文字符,而且英文字符分为大写字母和小写字母。若为大写字母,执行对大写字母计数,即 ps*pstr-A+;若为小写字母,执行对小写字母计数,即 ps*pstr-a+。因此,第三空处应填入 islower 或!isupper。第四空处用于实现将 pstr 指向下一字符,这在对字符串进行处理时十分常见,应填入 pstr+或+pstr 或其等价形式。第五空处用于实现设置暂存在 wordbuffer 中的单词结尾,而 i 为一个单词中字符计数的下标,单词结尾标志在单词中最后一个字符后面的位置。因此,第五空处应填入 wordbuff

    30、eri或*(wordbuffer+i)。第六空处用于实现将 pstr 指向下一字符,和第四空完全相同,应填入 pstr+或+pstr 或其等价形式。三、试题三(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空缺。说明如果矩阵 A 中的元素 Ai,j满足条件:Ai,j是第 i 行中值最小的元素,且又是第 j 列中值最大的元素,则称之为该矩阵的一个马鞍点。一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。C 函数Int findSaddle(int aN,int M),/*a 表示 M 行 N 列矩阵,N

    31、 是宏定义符号常量*/int row,coiumn,i,k;int minElem;int count=0;/*count 用于记录矩阵中马鞍点的个数*/for(row=0;row_;row+) /*minElem 用于表示第 row 行的最小元素值,其初值设为该行第 0 列的元素值*/_;for(culumn=1;column_;column+)if(minElemarowcolumn) minElem=arowcoiumn;for(k=0;kN;k+)if(arowk=minelem)/对第 row 行的每个最小元素,判断其是否为所在列的最大元素*/for(i=0;iM;i+)if(_mi

    32、nElem)break;if(i=_)printf(“(%d,%d):%d/n“,row,k,minElem);/*输出马鞍点*/count+;/*if*/*if*/*for*/return count,)/*findSaddle*/(分数:20.00)填空项 1:_ (正确答案:M)解析:填空项 1:_ (正确答案:minElem=arow0或其等价形式)解析:填空项 1:_ (正确答案:N)解析:填空项 1:_ (正确答案:aik或其等价形式)解析:填空项 1:_ (正确答案:M)解析:本题考查考生综合运用 C 语言的知识解决实际问题的能力。根据题目的描述,马鞍点 Ai,j为矩阵第 i 行

    33、中值最小的元素,且又是第 j 列中值最大的元素。第一空处的 for 循环实现对所有行进行遍历,而矩阵 a 共有 M 行,因此,第一空处应填入 M。根据程序段中提供的注释,第二空处用于设置第 row 行的最小元素值,且其初值设为该行第 0 列的元素值。因此,第二空处应填入 minElem=arow0。类似的思路,第三空处的 for 循环实现对所有列进行遍历,而矩阵 a 共有 N 行,因此,第三空处应填入N。根据程序段中提供的注释,第四空和第五空处实现对第 row 行的每个最小元素,判断其是否为所在列的最大元素,因此,第四空处应填入 aik。第五空处所在的 if 判断条件用于判断行是否比较结束,因

    34、此应填入 M。四、试题四(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空缺。说明函数 Insert _key(*root,key)的功能是将键值 key 插入到*root 指向根结点的二叉查找树中(二叉查找树为空时*root 为空指针)。若给定的二叉查找树中已经包含键值为 key 的结点,则不进行插入操作并返回0;否则申请新结点、存入 key 的值并将新结点 DHA 树中,返回 1。提示:二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;若它的右子树非空,则其右子树上所有结点的键值均

    35、大于根结点的键值;左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:typedef struct BiTnodeint key _value; /*结点的键值,为非负整数*/struct BiTnode *left,*right; /*结点的左、右子树指针*/BiTnode,*BSTree;C 函数int Insert _key(BSTree *root,int key)BiTnode *father=NULL,*p=*root,*s;while(_key!=p-key _value)(/*查找键值为 key 的结点*/father=p;if(keyp-ke

    36、y _value)p=_; /*进入左子树*/else p=_; /进入右子树*/if(p) return 0; /*二叉查找树中已存在键值为 key 的结点,无需再插入*/s=(BiTnode *)malloc(_);/*根据结点类型生成新结点*/if(!s)rettlrn -1;s-key _value=key; s-left=NULL; s-right=NULL;if(!father)_; /*新结点作为二叉查找树的根结点*/else /*新结点插入二叉查找树的适当位置*/if(keyfather-key _value)father-left=s;else father-right=s;

    37、return 1;(分数:20.00)填空项 1:_ (正确答案:p)解析:填空项 1:_ (正确答案:p-left)解析:填空项 1:_ (正确答案:p-right)解析:填空项 1:_ (正确答案:sizeof(BiTnode))解析:填空项 1:_ (正确答案:*root=s)解析:本题考查数据结构中二叉查找树的实现,题目中涉及的考点主要有链表运算和程序逻辑。考生应理解二叉查找树的性质,分析程序时首先要明确各个变量所其的作用和代表的含义,并按照语句组分析各段代码的功能,从而完成空缺处的代码填写。根据程序段中的注释,while 循环所在的程序段用于查找键值为 key 的结点。此时的循环条件

    38、应满足二叉查找树非空。因此,第一空处应填入 p!=NULL 或其等价形式。根据二叉查找树的性质,若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值。因此,若插入的键值 key 小于当前结点的键值,则应将其添加到其左子树中。因此,第二空处应填入 p-left。类似的思路,第三空处应填入 p-right 使其进入右子树。根据程序段中的注释,第四空处用于根据结点类型牛成新结点。由于需申请的结点的类型为 BiTnode,因此,第四空处应填入 sizeof(BiTnode),指定申请空间的大小。若该二叉查找树为空,新结点应作为二叉查找树的根结点进行插入,第五空处即实现该功能,应填入*root

    39、=s。五、试题五(总题数:1,分数:20.00)阅读以下说明和 C 函数,填充函数中的空缺。说明已知两个整数数组 A 和 B 中分别存放了长度为 m 和 n 的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前 m 个整数存入 A 中,其余元素依序存入 B 中。例如:合并前合并后数组A 的内容1,9,281,4,7数 4,7 9,1组B 的内容,12,29,372,28,29,37合并过程如下:从数组 A 的第一个元素开始处理。用数组 B 的最小元素 B0与数组 A 的当前元素比较,若 A 的元素较小,则继续考查 A 的下一个元素;否则,先将

    40、 A 的最大元素暂存入 temp,然后移动 A 中的元素挪出空闲单元并将 B0插入数组 A,最后将暂存在 temp 中的数据插入数组 B 的适当位置(保持 B 的有序性)。如此重复,直到 A 中所有元素都不大于 B 中所有元素为止。C 函数void Adjustment(int A,intB,int m,int n)/*数组 A 有 m 个元素,数组 B 有 n 个元素*/int k,temp;for(i=0;im;i+)if(Ai=B0) continue,temp=_;/*将 A 中的最大元素备份至 temp*/*从后往前依次考查 A 的元素,移动 A 的元素并将来自 B 的最小元素插入

    41、A 中*/for(k=m-1;_;k-)Ak=Ak-1;Ai=_;/*将备份在七 emp 的数据插入数组 B 的适当位置*/for(k=1;_kn;k+)Bk-1=Bk;Bk-1=_;(分数:20.00)填空项 1:_ (正确答案:Am-1或*(A+m-1)或其等价表示)解析:填空项 1:_ (正确答案:ki)解析:填空项 1:_ (正确答案:B0或*B)解析:填空项 1:_ (正确答案:tempBk或其等价表示)解析:填空项 1:_ (正确答案:temp)解析:本题考查 C 语言中数组的基本概念和应用。根据程序段中的注释,第一空处将将数组 A 中的最大元素备份至 temp。由于 A 中存放了

    42、长度为 m 的非递减有序序列,其最大元素为第 m 个元素,因此,第一空处应填入:Am-1或其等价表示。程序段接下来的 for 循环实现从后往前依次考查 A 的元素,移动 A 的元素并将来自 B 的最小元素插入 A 中。由于 B 的最小元素插入到 Ai和 Am-1之间,因此,第二空处的循环控制条件应填入:ki。第三空处将 B 的最小元素 b0插入到适当的位置,因此应填入 B0或其等价表示。程序段的最后一个 for 循环实现将备份在 temp 的数据插入数组 B 的适当位置。在将 temp 插入到 B 中时,须保持 B 的有序性,因此,第四空处应填入:tempBk。第五空处实现将 temp 插入到 B 中,因此应填入 temp。


    注意事项

    本文(【计算机类职业资格】程序员-C语言程序设计(二)及答案解析.doc)为本站会员(orderah291)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开