首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 本程序对某电码文(原文)进行加密形成密码文,其加密算法如下: 假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 k
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 本程序对某电码文(原文)进行加密形成密码文,其加密算法如下: 假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 k
admin
2010-01-15
22
问题
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:
假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:
加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置:依次类推,直至n个原文字符全部放入密文环中。由此产生的 S1S2…Sn即为原文的密文。
例如,当Key=3时,原文this is a decoding system的密文为:
aotgnhedi ys d imietsnc ss
当Key=4时,该原文的密文为:
ssdtyd htegiasiscnm e ion
本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中函数采用一个双向循环链表CODE来表示密文环:函数strlen用于计算一个字符串中的字符个数(不包括字符串结尾符’\O’)。为了简单起见,程序中假设内存容量足以满足动态存储单元分配的要求。
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{ char ch;
struct node *forward;/* Link to next node. */
struct node *backward;/* Link to previous node.*/
} CODE;
int strlen(char *s)
{ int len=0;
while (*s++!=’\0’)
len++;
return(len);
}
char *decode(char *otd,int key)
{ char *New; int length,count,i;
CODE *loop,*p;
length=strlen(old);
loop=(CODE *) malloc(length*sizeof(CODE));
for (i=1;i<length-1;i++)
{ loop
,forward=&loop[i+1];
(1)
}
loop[0].backward=&loop[length-1];
loop[0],forward=&loop[1];
loop[length-1].forward=loop;
(2)
for (p=loop,i=0;i<length;i++)
{ for (count=1 ;count<key;count++
p=p->forward;
(3)
p->backward->forward=p->forward;
p->forward->backward=p->backward;
(4)
}
New=(char *)malloc((length+1) *sizeef(char));
for (i=0;i<length;i++)
(5)
New[length]=’\0’;
return (New);
}
void main()
{ char old[256];
int key, num=0;
printf("\nPlease input the telegraph: \n");
while (num<255 && (old[num++]=getchar())!=’\n’);
old [(num==255)?num:num-1]=’\0’;
do
{ printf("\nPlease input Key (Key>1):");
scanf("%d",&key);
} while (key<=1);
printf( "\nThe decode of telegraph:’%s’is:\n’%s’\n",old,decode(old,key));
}
选项
答案
(1)loop[i].backward=&loop[i-1]; (2)loop[length-1].backward=&loop[length-2]; (3)p->ch=*old++; (4)p=p->forward; (5)New[i]=loop[i].ch;
解析
本题考查加密算法在C语言中的实现及双向循环链的生成。
题目给出了具体加密算法的过程,要求函数decode用于将原文old加密并返回密文字符数组的首指针,并告诉我们函数采用一个双向循环链表CODE来表示密文环。函数 strlen用于计算一个字符串中的字符个数在程序中已经实现。
下面,我们来看程序。根据题目给出的条件,我们知道函数decode的基本功能和一些其他的性质。在函数decode中,loop=(CODE*)malloc(length*sizeof(CODE))要求动态分配能存放length个CODE类型的内存空间,这说明分配了length个CODE链表结点的空间,并把其首地址存放到指针变量loop中。但题目要求CODE链表是双向循环链表,因此,还需要将这些结点连接起来使其成为双向循环链表。程序通过一个循环语句来对除首结点和尾结点外的其他结点的前后指针域赋值,使forward指针域指向其后一个结点,使backward指针域指向其前一个结点。因此第(1)空的答案出来了,是 loop
.backward=&loop[i-1]。
为了构成循环链表,需要对链表中的首结点和尾结点进行操作,首结点的forward指针域和backward指针域应该分别指向第二个结点和尾结点,而尾结点的forward指针域和backward指针域应该分别指向首结点和倒数第二个结点。因此,第(2)空的答案应该是loop[length-1).backward=&loop[length-2]。
第(3)空和第(4)空在一个循环体中,根据我们上面的分析,再结合代码,我们可以知道,这个循环应该是对数据实现加密的过程。加密算法规定:加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置,接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置;依次类推,直至 n个原文字符全部放入密文环中。从程序中可以看出,第(3)空处应该是当数到第key个字符位置的时候,应该要完成的任务,那么任务就是将原文中的字符放入该密文字符位置中,同时要将原文中的字符往后移一个。所以,此空答案为p->ch=*old++。接下来应该从环中除去该字符位置,接着从环中下一个字符位置起继续计数,而删除环中该字符位置已经实现,第(4)空的作用只能是移动指针p去环中下一个位置,因此答案为 p=p->forward。
接下来的代码重新动态分配了一段空间,用来存放加密后的密文,第(5)空的作用应该是将密文环中的内容依次放入重新分配的数组New中,因此,此空的答案为New
=loop
.ch。
转载请注明原文地址:https://kaotiyun.com/show/FBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
某企业要求将各销售部门上月的销售额制作成图表。________________能直观形象地体现各销售部门的业绩以及在企业总销售额中的比例。
Windows7中的文件命名规则不包括________________。
在Word2010编辑状态下,要打印文稿的第1页、第3页和第9页,可在打印页码范围中输入()。
某金融企业正在开发移动终端非现场办公业务,为控制数据安全风险,采取的数据安全措施中并不包括______。
()是一种保护数据的安全策略,该策略使用户只能感知自己将用到的信息,对于其他信息都加以屏蔽和保护,使信息泄露、数据完整性受到损害的可能性最小。
在Word中,下列关于拆分表格的叙述中,正确的是______。
我国《计算机软件保护条例》规定,软件著作权自软件______之日起产生。
某个字段的数据是原始数据计算的结果,该字段的宽度和小数位数对数据的精度有影响。一般来说,小数位数的确定需要考虑______。
收集数据时,设计调查的问题很重要。此时,需要注意的原则不包括(8)。
如果一张幻灯片中的数据比较多,很重要,不能减少,可行的处理方法是______。
随机试题
金河秋半虏弦开,云外惊飞四散哀。仙掌月明孤影过,长门灯暗数声来。须知胡骑纷纷在,岂逐春风一一回。莫厌潇湘少人处,水多菰米岸莓苔。整体说来,这首诗运用了什么表现方法?
基金管理公司应制定估值及份额净值计价错误的识别及应急方案,当计价错误率达到()%时,基金管理公司应当公告并报监管机构备案。
某地地处平原,气候宜人,有河湖相伴,雨水丰厚,适合种植。经过当地政府和农民的不断创新和投资开发,种植出了具有本地特色的大米,备受消费者的欢迎。由于当地独特的土壤和气候条件,此种大米只能在本地生产。随着该大米的供不应求,种植业的繁荣带动了本地及周围地价的上涨
根据以下资料,回答下列问题。2013年3月末,金融机构人民币各种贷款余额65.76万亿元,同比增长14.9%,增速比上年同期低0.8个百分点。2013年3月末,主要金融机构及小型农村金融机构、外资银行人民币小微企业贷款余额11.78万亿元,同比增长13
下列各句中,没有语病的一项是()。
在行政诉讼中,人民法院实施下列哪一行为须征得原告同意?()
Theideathatsomegroupsofpeoplemaybemoreintelligentthanothersisoneofthosehypothesesthatdarenotspeakitsname.
SWIMMINGWITHSHARKSOahu’sMostThrillingAdventure!GuaranteedSharks!
SECTION4Questions31-40Questions31-35Completetheinformationinthetable.
Mozart’splaceinhistoryisdueinparttothefactthathisfatherrecognizedandnurturedhistalentfromanearlyage,virtu
最新回复
(
0
)