首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
Excel的应用场合有 (74) 。
查看本题答案
包含此试题的试卷
初级程序员《简单单选》真题及答案
点击查看
你可能感兴趣的试题
吊钩有哪几种形式简述其特点和应用场合
螺纹的类型及应用场合有哪些题
我国润滑油的总分类是按润滑剂的应用场合进行分类的其中X组的应用场合为
用润滑脂的场合
金属加工
齿轮
液压系统
交换装置的形式有哪几种?各有何应用场合和特点?
研磨加工的应用场合有哪些怎样确定研磨余量
Excel的图表中饼图和柱形图
都一样只是应用场合不同
柱形图好用
饼图比柱形图功能强
饼图好用
万向传动装置在汽车上的应用场合有哪些
有源滤波的应用场合有哪些
国内对润滑剂及有关产品根据应用场合进行分组组别符号为A的应用场合是机 械油
平面连杆机构有何优点和缺点其应用场合
天车常用吊钩形式有哪几种说明其应用场合
金属型的主要结构形式有哪几种其特点及应用场合如何
光盘的类型有哪几种各适用于哪些应用场合
自动换刀装置的形式有哪几种?各有何应用场合和特点?
光纤的连接方式有哪些主要应用场合在哪里
国内对润滑剂及有关产品根据应用场合进行分组组别符号为H的应用场合是液 压系统
国内对润滑剂及有关产品根据应用场合进行分组组别符号为C的应用场合是柴 油发动机
根据不同的应用场合操作系统有哪几种类型
常用的压型有哪几种它们的性能特点及应用场合如何
凸轮控制器的组成构件有哪些说明其特点及应用场合
热门试题
更多
[说明]已知1900年1月1日是星期一下面的函数count_5_13intyear用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期函数count_5_13intyear首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数程序中使用了函数isLeapYearintyear其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年[C语言函数]intCount_5_13intyearintdate;/*date为0表示星期日为1~6分别表示星期一至星期六*/longdays=0;/*days记录天数*/intmyc=0;/*c用于表示黑色星期五的个数*/ifyear<1900return-1;/*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/days=12fory=1900;y<year;y++days+=365;ifiSLeapYearY1;date=days%7+1%7;/*算出给定年份year的1月13日是星期几+/c=21:0;form=1;3;m++switchmcase1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:days=28;if4days=29;break;/*endofswitch*/date=days%7+5%7;ifdate==5c++;/*endoffor*/returnc;
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 3处填
[说明]已知1900年1月1日是星期一下面的函数count_5_13intyear用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期函数count_5_13intyear首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数程序中使用了函数isLeapYearintyear其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年[C语言函数]intCount_5_13intyearintdate;/*date为0表示星期日为1~6分别表示星期一至星期六*/longdays=0;/*days记录天数*/intmyc=0;/*c用于表示黑色星期五的个数*/ifyear<1900return-1;/*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/days=12fory=1900;y<year;y++days+=365;ifiSLeapYearY1;date=days%7+1%7;/*算出给定年份year的1月13日是星期几+/c=21:0;form=1;3;m++switchmcase1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:days=28;if4days=29;break;/*endofswitch*/date=days%7+5%7;ifdate==5c++;/*endoffor*/returnc;
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode intdata structNode*next NODE; [C语言函数] voidsortNODE*head NODE*ptr*preptr*endptr; inttempdata; ptr=head->next; while1/*查找表尾节点*/ ptr=ptr->next; endptr=ptr;/*令endptr指向表尾节点*/ ptr=2; whileptr!=endptr while3 ifptr->data>ptr->next->data tempdata=ptr->data;/*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; preptr=4ptr=ptr->next; endptr=5;ptr=head->next; 2处填
[说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode intdata structNode*next NODE; [C语言函数] voidsortNODE*head NODE*ptr*preptr*endptr; inttempdata; ptr=head->next; while1/*查找表尾节点*/ ptr=ptr->next; endptr=ptr;/*令endptr指向表尾节点*/ ptr=2; whileptr!=endptr while3 ifptr->data>ptr->next->data tempdata=ptr->data;/*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; preptr=4ptr=ptr->next; endptr=5;ptr=head->next; 4处填
[说明]下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 1处填
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 1处填
[说明]下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明]下面的程序用DoleRob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止①在第一行的正中插入1②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示816357492[C程序]#include<stdio.h>#include<stdlib.h>#defineSIZE50mainintrowcolnvalue;inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE;scanf%d&n;if!n%2||n<1||1printf输入数据有误!/n;exit0;row=1;col=n+1/2;value=1;whilevalue<=2a[row][col]=value;/*计算下一位置*/ifvalue%n!=0row--;3;ifrow<1row=n;ifcol>n4;elserow++;value=5;printf/n%d阶魔方阵如下所示/n/nn;forrow=1;row<=n;row++forcol=1;col<=n;col++printf%5da[row][col];printf/n;
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 5处填
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 5处填
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时注4跨月的通话记录计入下个月的通话数据文件例如o23:01:1200:12:15表示本次通话是本机呼叫其他用户时间从23时01分12秒至次日的0时12分15秒通话时间为71分03秒下面程序的功能是计算并输出该用户本月电话费单位元通话计费规则为1月通话费按每次通话费累加2每次的通话费按通话时间每分钟0.08元计算不足1分钟时按1分钟计费对于每次的拨出通话程序中先分别计算出通话开始和结束时间相对于当日0点0分0秒的时间长度以秒为单位然后算出本次通话时间和通话费例如若输入文件dial.txt的数据如下所示则输出fee=7.44o14:05:2314:11:2582346789i15:10:0016:01:1513890000000o10:53:1211:07:0563000123o23:01:1200:12:1513356789001[C语句程序代码]#include<stdio.h>FILE*fin;intmaincharstr[80];inth1h2m1m2s1s2;longt_startt_endinterval;intc;doublefee=0;fin=fopendial.txtrj;if!finreturn-1;while!feoffinif!fgetsstr80finbreak;if1continue;h1=str[2]-48*10+str[3]-48;m1=str[5]-48*10+str[6]-48;s1=str[8]-48*10+str[9]-48;h2=str[11]-48*10+str[12]-48;m2=str[14]-48*10+str[15]-48;s2=str[17]-48*10+str[18]-48;t_start=h1*60*60+m1*60+s1;/*通话开始时间*/t_end=h2*60*60+m2*60+s2/*通话结束时间*/if2/*若通话开始和结束时间跨日*/interval=3-t_start+t_end;elseinterval=t_end-t_start;c=4;/*计算完整分钟数表示的通话时间*/ifinterval%605;fee+=c*0.08;fclosefin;printffee=%.21f/nfee;return0;
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 3处填
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]下面的程序用DoleRob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止①在第一行的正中插入1②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示816357492[C程序]#include<stdio.h>#include<stdlib.h>#defineSIZE50mainintrowcolnvalue;inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE;scanf%d&n;if!n%2||n<1||1printf输入数据有误!/n;exit0;row=1;col=n+1/2;value=1;whilevalue<=2a[row][col]=value;/*计算下一位置*/ifvalue%n!=0row--;3;ifrow<1row=n;ifcol>n4;elserow++;value=5;printf/n%d阶魔方阵如下所示/n/nn;forrow=1;row<=n;row++forcol=1;col<=n;col++printf%5da[row][col];printf/n;
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]下面的程序用DoleRob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止①在第一行的正中插入1②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示816357492[C程序]#include<stdio.h>#include<stdlib.h>#defineSIZE50mainintrowcolnvalue;inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE;scanf%d&n;if!n%2||n<1||1printf输入数据有误!/n;exit0;row=1;col=n+1/2;value=1;whilevalue<=2a[row][col]=value;/*计算下一位置*/ifvalue%n!=0row--;3;ifrow<1row=n;ifcol>n4;elserow++;value=5;printf/n%d阶魔方阵如下所示/n/nn;forrow=1;row<=n;row++forcol=1;col<=n;col++printf%5da[row][col];printf/n;
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 4填
[说明]下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 5填
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 1处填
[说明]计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-*+计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46512037-*+的汁算过程如下①依次将46512037压入栈中②遇到-取出37120计算120-37=83将其压入栈中③遇到*取出835计算5×83=415将其压入栈中④遇到+取出41546计算46+415=461将其压入栈中⑤表达式结束则计算过程完成函数computingcharexpt[]int*result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK*s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACKs返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACKs若s是空栈则返回1否则返回0[C函数]intcomputingcharexpr[]int*resultSTACKs;inttnumab;char*ptr;InitStack&s;ptr=expr;pstr/*字符指针指向后缀表达式串的第一个字符*/while*ptr!=’/0’if*ptr==’’/*当前字符是空格*/1;/*字符指针指向下一字符*/continue;elseifisdigit*ptr/*当前字符是数字则将该数字开始的数字串转换为数值*/tnum=2;while*ptr>=’0’&&*ptr<=’9’tnum=tnum*10+3;ptr++;push4;else/*当前字符是运算符或其他符号*/if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’if!IsEmptySa=Tops;Pop&s;/*取运算符的第二个运算数*/if!IsEmptySb=Tops;Pop&s;/*取运算符的第一个运算数*/elsereturn-1;elsereturn-1;switch*ptrcase’+’:Push&Sb+a;break;case’-’:Push&sb-a;break;case’+’:Push&sb*a;break;case’/’:Push&sb/a;break;elsereturn-1;ptr++;/*字符指针指向下一字符*//*while*/ifIsEmptysreturn-1;else5=Tops;Pop&s;/*取运算结果*/if!IsEmptysreturn-1;return0;
[说明]计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-*+计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46512037-*+的汁算过程如下①依次将46512037压入栈中②遇到-取出37120计算120-37=83将其压入栈中③遇到*取出835计算5×83=415将其压入栈中④遇到+取出41546计算46+415=461将其压入栈中⑤表达式结束则计算过程完成函数computingcharexpt[]int*result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK*s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACKs返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACKs若s是空栈则返回1否则返回0[C函数]intcomputingcharexpr[]int*resultSTACKs;inttnumab;char*ptr;InitStack&s;ptr=expr;pstr/*字符指针指向后缀表达式串的第一个字符*/while*ptr!=’/0’if*ptr==’’/*当前字符是空格*/1;/*字符指针指向下一字符*/continue;elseifisdigit*ptr/*当前字符是数字则将该数字开始的数字串转换为数值*/tnum=2;while*ptr>=’0’&&*ptr<=’9’tnum=tnum*10+3;ptr++;push4;else/*当前字符是运算符或其他符号*/if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’if!IsEmptySa=Tops;Pop&s;/*取运算符的第二个运算数*/if!IsEmptySb=Tops;Pop&s;/*取运算符的第一个运算数*/elsereturn-1;elsereturn-1;switch*ptrcase’+’:Push&Sb+a;break;case’-’:Push&sb-a;break;case’+’:Push&sb*a;break;case’/’:Push&sb/a;break;elsereturn-1;ptr++;/*字符指针指向下一字符*//*while*/ifIsEmptysreturn-1;else5=Tops;Pop&s;/*取运算结果*/if!IsEmptysreturn-1;return0;
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 2填
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 3处填
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术