阅读以下说明和c函数,填补c函数中的空缺(1)—(5),将解答写在答题纸的对应栏内。
【说明】
约瑟夫问题如下所述:有n个人(编号为1~n)围成一圈,从第一个人开始,按照顺时针方向从1开始计数到m(即数到第m个人),让其出圈,然后再从其顺时针方向的下一个人开始,依次计数到m并让其出圈,重复这个过程,直到所有人都出圈,试给出出圈者的顺序。
以n=5,m=3为例,其中圈顺序为3,1,5,2,4,过程如下图所示。
下面的函数Joseph()在单向循环链表表示的基础上诉出圈的过程。
n为5时的单向循环链表结构如下图所示。
链表的结合类型定义如下:
typedef struct Node {
int no;
struct Node*next;
}Node,*LinkList;
函数Joseph(LinkList tail,int n,int m)的处理思路如下:
(1)用k计数,每次都从0开始,当计数到m-1时结束本次计数;
(2)通过指针p查找出圈者所对应的结点,当K的值等于是m-1时,P应指向出圈者对应结点的前驱结点;
(3)通过删除结点表示出圈处理;
(4)当m大于圈中剩余人数时,为了避免重复计数,用模运算修改m的值;
(5)计数和删除操作完成后再恢复m的原值;
【C函数】
void Joseph(LinkList tail,int n,int m)
{ /*单循环链表包含n个结点,tail为链表的尾指针,m为计数值*/
LinkList p,q;
int k,i,old_m=m;
p=tail;
for(i=n;i>1;--i) { /*i 表示圈中剩余人数*/
m=m%i; /*避免重复计数*/
if(0==m) m=(1);
k=0;
while(k<(2)) {
(3);
k++;
}
printf("%d\n",(4)); /*输出出圈者的编号*/
q=p->next;
(5)=q->next; /*删除出圈者对应的结点*/
free(q);
m=old_m;
}
printf(“%d\n”,p->No);
}
(1)i
(2)m-1
(3)p=p->next
(4)p->next->No
(5)p->next
本题考查 C 程序设计基本能力及指针的应用。
题目中涉及的考点主要有链表运算和程序逻辑,分析程序时首先要明确各个变量所起的作用,并按照语句组分析各段代码的功能,从而完成空缺处的代码填充。
根据函数 Joseph 的处理思路, "m= m%i" 可避免计数过程重复(通俗来说,就是计数时绕着圈地数),需要考虑的特殊情况是 m 可能取值为 0,此时对应的情况应该是正好要数到目前所在位置的前一个人,由于链表指针的单向特点,还需逐个结点数过去才行,即当圈中还剩下 i 个人时,最多计数到 i,因此空(1)处应填入"i"
下面的语句组在单循环链表中扫描结点并完成计数。
k = 0;
while (k< (2) ) {
(3) ;
k++;
}
由于计数器 k 从 0 开始计数,因此,while 语句的循环条件应为 "k<m-1",因此,空(2)处应填入 "m-1"。由于在链表中通过指针p 指向结点并进行遍历,所以空(3)处应填入 "p = p->next"。
根据题目中函数 Joseph 的处理思路说明,当 k 的值等于 m-1 时,p指向出圈者对应结点的前驱结点,因此,p->next 所指向的结点是要被删除的结点,其编号为 p->next->No , 因此空(4)处应填入"p->next->No"。
删除 p 所指结点的后继结点的处理如下图所示,即要删除数据域为 y 的结点,需要将 p 所指结点的指针域指向 z 结点,对应的处理是:p->next = p->next->next ,由于己经使得 q 指向了 y 结点,从而有等同的处理:p->next = q->next ,因此空(5)处应填入"p->next"。
思科路由器的内存体系由多种存储设备组成,其中用来存放IOS引导程序的是( ),运行时活动配置文件存放在( )中。
问题1选项
A.FLASH
B.ROM
C.NVRAM
D.DRAM
问题2选项
A.FLASH
B.ROM
C.NVRAM
D.DRAM
电信运营商提供的ISDN服务有两种不同的接口,其中供小型企业和家庭使用的基本速率接口(BRI)可提供的最大数据速率为( )。供大型企业使用的主速率接口(PRI)可提供的最大数据速率为( )。
问题1选项
A.128Kb/s
B.144Kb/s
C.1024Kb/s
D.2048Kb/s
问题2选项
A.128Kb/s
B.144Kb/s
C.1024Kb/s
D.2048Kb/s
PGP (Pretty Good Privacy)是一种电子邮件加密软件包,它提供数据加密和数字签名两种服务,采用( )进行身份认证,使用( )(128位密钥)进行数据加密,使用( )进行数据完整性验证。
问题1选项
A.RSA公钥证书
B.RSA私钥证书
C.Kerboros证书
D.DES私钥证书
问题2选项
A.IDEA
B.RSA
C.DES
D.Diffie-Hellman
问题3选项
A.HASH
B.MD5
C.三重DES
D.SHA-1
边界网关协议BGP4被成为路径矢量协议,它传送的路由信息是由一个地址前缀后跟( )组成,这种协议的优点是( )。
问题1选项
A.一串IP地址
B.一串自治系统编号
C.一串路由器编号
D.一串子网地址
问题2选项
A.防止域间路由循环
B.可以及时更新路由
C.便于发现最短通路
D.考虑了多种路由度量因素
某公司域名为pq.com,其POP服务器的域名为pop.pq.com,SMTP服务器的域名为smtp.pq.com,配置Foxmail邮件客户端时,在发送邮件服务器栏应该填写( ),在接收邮件服务器栏应该填写( )。
问题1选项
A.pop.pq.com
B.smtp.pq.com
C.pq.com
D.pop3.pq.com
问题2选项
A.pop.pq.com
B.smtp.pq.com
C.pq.com
D.pop3.pq.com
CDMA for cellular systems can be described as follows. As with FDMA, each cell is Allocated a frequency ( ),which is split into two parts; half for reverse (mobile unit to base station) and half for( )(base station to mobile unit). For full-duplex( ), a mobile unit uses both reverse and forward channels. Transmission is in the form of direct-sequence spread( )which uses a chipping code to increase the data rate of the transmission, resulting in an increased signal bandwidth.Multiple access is provided by assigning( )chipping codes to multiple users, so that the receiver can recover the transmission of an individual unit from multiple transmissions.
问题1选项
A.wave
B.signal
C.bandwidth
D.domain
问题2选项
A.forward
B.reverse
C.backward
D.ahead
问题3选项
A.connection
B.transmission
C.compromise
D.communication
问题4选项
A.structure
B.spectrum
C.stream
D.strategy
问题5选项
A.concurrent
B.orthogonal
C.higher
D.lower
结构化布线系统分为六个子系统,其中水平子系统的作用是( ),园区子系统的作用是( )。
问题1选项
A.连接各个建筑物中的通信系统
B.连接干线子系统和用户工作区
C.实现中央主配线架与各种不同设备之间的连接
D.实现各楼层设备间子系统之间的互连
问题2选项
A.连接各个建筑物中的通信系统
B.连接干线子系统和用户工作区
C.实现中央主配线架与各种不同设备之间的连接
D.实现各楼层设备间子系统之间的互连
IPv6的可聚合全球单播地址前缀为( ),任意播地址的组成是( )。
问题1选项
A.010
B.011
C.001
D.100
问题2选项
A.子网前缀+全0
B.子网前缀+全1
C.链路本地地址前缀+全0
D.链路本地地址前缀+全1
DNS服务器中的资源记录分成不同类型,其中指明区域主服务器和管理员邮件地址的是( ),指明区域邮件服务器地址是( )。
问题1选项
A.SOA记录
B.PTR记录
C.MX记录
D.NS记录
问题2选项
A.SOA记录
B.PTR记录
C.MX记录
D.NS记录
采用抓包工具截获的结果如下图所示,图中第1行记录显示的是( ),该报文由( )发出。
问题1选项
A.TCP错误连接响应报文
B.TCP连接建立请求报文
C.TCP连接建立响应报文
D.Urgent紧急报文
问题2选项
A.Web客户端
B.Web服务器
C.DNS服务器
D.DNS客户端