首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 [说明] 以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。 假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 [说明] 以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。 假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n
admin
2009-02-15
35
问题
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。
[说明]
以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。
假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n为小于256的任意自然数。首先读入正整数Key(Key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如图4-12所示。
图4-12 密文字符环示意图
加密时从S1位置起顺时针计数,当数到第Key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第Key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置;依此类推,直至n个原文字符全部放入密文环中。由此产生的S1S2……Sn即为原文的密文。
例如,原文:One World One Dream。当Key=5时,其密文为:me OnWlanD oOedrer;当Key=6时该原文的密文为:oeDn OedrrOn Wma le。程序使用示例如图4-13所示。
图4-13 程序使用示例
在[C程序]中,将电码的原文存入字符数组old[],加密钥匙存入在整数变量Key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中,函数采用一个双向循环链表CODE来表示密文环。函数strlen用于计算一个字符串中个数(不包括字符串结尾符’\0\)。为了简单起见,程序中假设内存容量足以满足动态存贮单元分配的要求。
[C程序]
#include <stdio.h>
#include <alloc.h>
#define CR 13
typedef struct node{
char ch;
struct node *forward; /* Link to next node. */
struct node *backward; /* Link to previous node.*/
} CODE;
main()
{ char (1), old[256];
int strlen () , key , num=0;
printf("\n Please input the telegraph:\n")
while (num<255 && (old[num++] = getch() != CR );
old [(2)] = ’\0’;
do
{ printf("\n Please input Key=?(Key>1):");
scanf ("%d",& key);
} while (key<=1);
printf("\n The decode of telegraph: ’%s’ is:\n ’%s’\n", old, decode (old, key));
char *decode(old, key);
char *old;
int key;
{ char *new;
int length, count, i;
CODE *loop,*p;
length=strlen (old);
loop=( (3) ) malloc (length*sizeof (CODE));
for (i = 1;i<length-1;i++)
{ loop
.forward = &loop[i+1];
loop
.backward = &loop[i-1];
}
loop[0].backward = &loop[length-1];
loop[0].forward = &loop[1];
loop[length-1].forward = loop;
loop[length-1].backward = &loop[length-2];
for (p = loop, i = 0;i<length; i++)
{ for (count = 1;count<key; count++)
p=(4);
p->ch=*old++;
p->backward->forward =(5);
p->forward->backward =(6);
p=p->forward;
}
new = (char *) malloc((length+1 *sizeof(char));
for (i=0;i<length; i++)
new
= loop
.ch;
new[length]=’\0’;
return (new)
}
int strlen(s)
char *s;
{ int len = 0;
while ((7) !=’\0’)
len++;
return( len );
}
选项
答案
本案例是对一字符串根据正整数key进行加密处理。C程序中原文存放在数组old中,用函数 decode(old, key)将原文old加密成密文,并返回存放密文字符数组的首指针。了解加密算法和存放原文与密文的数据结构及完成加密功能的函数名称后,再仔细阅读程序,分析给出的语句在加密过程中的作用,就能逐步求得解答。 主函数main用来接收输入参数并输出加密结果。仔细阅读程序,可知加密函数decode在main之后定义而被main引用,在引用前应给予说明。因此(1)空缺处是用来说明函数decode的,其所填入的内容是“*decode()”。 主函数中用while循环语句读入原文并存放在数组old[]中,控制条件是已接收255个字符或回车符。在C语言中规定,一个字符串数据总是以‘\0’为结束标志。在接收字符过程中,变量num总是指向下一个要接收的字符存放位置。如果已接收255个字符,就应该把‘\0’放入old[255];如果遇到回车符,因其不是原文字符,则应该把‘\0’放入old[num-1]中。因此(2)空缺处需要使用C语言中的条件语句来完成相应的功能,该空缺处所填入的内容是“(num==255)?num:num-1”。 函数decode把存放在old中的原文按key值进行加密,加密结果存放在以new为首地址的字符串中,并将该地址返回。这此信息可从函数一开始的“char *decode(old,key)”和函数结束处的"return (new);”得知。函数decode中调用另一个函数length(old),以计算数组old中的字符个数,并利用此长度去分配存储空间。该存储空间用于存放密文,空间的首地址指针为loop,类型为CODE。借鉴语句“new=(char *)malloc((length+1) *sizeof(char));”可得,(3)空缺处所填入的内容是“CODE*”,使之成为待加密的双向环状链表。 在函数decode中,对待加密的双向环状链表加密之后,利用for循环语句找出应从环中去除字符的位置,因此(4)空缺处所填入的内容是“p->forward”,使指针p指向下一个节点。按题干说明的加密算法,应把*old放入该节点,并要把该节点从双向链表中删除。(5)、(6)即为将该节点从链表中脱钩,节点本身仍然存在,可以通过loop[i]的形式取其密文。因此(5)、(6)空缺处所填入的内容分别是“p->forward”和“p->backward”。 函数strlen的功能是计算字符串的长度。它先取字符串进行判别,即是否为字符串的结束标志‘\0’,是则结束;否则应使S指向该串的下一个字符,同时计数器加1。因此(7)空缺处所填入的内容是“*s++”。
解析
转载请注明原文地址:https://kaotiyun.com/show/kEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
四个铜厂前年的产值、去年的产值如下表:根据上表,在这几个厂中,(29)发展最快。
某一个PPT文档共有8张幻灯片,现选中第4张幻灯片,改变幻灯片背景设置后,单击“应用”按钮,则______。
面向社会服务的信息系统突发安全事件时所采取的技术措施中一般不包括(62)________________。
某数字校园平台的系统架构包括用户层和以下四层。制作各种可视化图表的工具属于(14)________________。
在信息收集过程中,需要根据项目的目标把握数据(7)________________要求,既不要纳入过多无关的数据,也不要短缺主要的数据;既不要过于简化,也不要过于烦琐。
在Excel2010中,C3:C7单元格中的值分别为10、OK、20、YES和48,在。D7单元格中输入函数“=COUNT(C3:C7)”,按回车键后,D7单元格中显示的值为________________。
以下关于Word2010图形和图片的叙述中,不正确的是()。
在Windows7中,磁盘文件类型可以根据______来识别。
数据录入工作有两个指标:录入速度和错误率。一般而言,数据录入员在录入大批数据时,录入速度会(65),错误率会(66)。65
随机试题
水玻璃在硬化后,具有耐________、耐________等性质。
行开颅手术后病人出现脑脊液鼻漏,护理方法正确的是
简述延缓药物制剂中有效成分氧化的方法。
下图是一个工厂的某个技术改造项目的项目结构图的示例(在该示例中业主方因工作需要设业主方代表),业主内部为(),而对于项目实施而言,则是职能组织结构。
装饰装修细部工程中的护栏和扶手制作和安装中,护栏高度、栏杆间距、安装位置必须符合规范要求,下列叙述正确的是()。
注册税务师接受委托对某生产企业的印花税纳税情况进行审核时,发现如下情况;(1)2008年1月将价值200万元的自产产品一批无偿捐赠给当地政府主办的养老院。财务人员认为此业务属于增值税的视同销售业务,所以,企业按购销合同在捐赠书据上计贴了印花税。(2)
以下各项中,不属于的是认为某一笔贷款或信用卡本人根本就没申请过的异议类型的是()。
小学数学中学生通过比较桌面、地面、墙面、操场的面积大小,最后概括出“面积就是平面图形或物体表面的大小”这一面积的定义。这一学习属于()。
甲超速驾驶,经过十字路口时,与逆向行驶的乙驾驶的车辆相撞,甲的车辆被撞到路边,将正常行走的丙砸伤。丙入院治疗,花去医药费5万余元,并且造成丙八等残疾。丙向法院提起诉讼,要求甲乙承担赔偿责任。甲认为是由于乙的撞击才导致自己的车辆砸到丙,应当由乙赔偿,自己不承
Aprovocativenewbook,AcademicallyAdrift-.LimitedLearningonCollegeCampusesmakesastrongcasethatforalargeportion
最新回复
(
0
)