首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 [说明] 以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。 假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 [说明] 以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。 假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n
admin
2009-02-15
41
问题
阅读以下应用程序说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
PowerPoint内置的动画效果中,不包括(60)。
对用户来说,信息系统的(14)反映了系统的功能。
在Excel中,选中某单元格并输入123,回车后此单元格的显示内容为¥123,则可知此单元格的格式被设成了(54)。
在Excel中,若A1单元格的值为5,在B1单元格输入函数“=A1-10”,则B1单元格的值为______。
结构化程序中的基本结构不包括(28)。
下列关于数据库系统的说法中,(62)是错误的。
《信息处理系统一开放系统互连一基本参考模型》(ISO7498-2:1989)属于(63)________________。
为了查看幻灯片能否在20分钟内完成自动播放,需要为其设置(53)________________。
根据某机构的统计与推测,我国人口中男性和女性各个年龄段的百分比如下图。根据该图,以下叙述中正确的是________________。
数据录入工作有两个指标:录入速度和错误率。一般而言,数据录入员在录入大批数据时,录入速度会(65),错误率会(66)。65
随机试题
失业者领取失业保险金,不可低于当地工资标准的80%。()
杠杆千分尺的测量压力是由微动测杆处的弹簧控制的。()
有一等边三桩承台基础。采用沉管灌注桩,桩径为426mm。有效桩长为24m。有关地基各土层分布情况、桩端阻力特征值qpa桩侧阻力特征值qsia及桩的布置、承台尺寸等如题图所示。已知c2=939mm,a12=467mm,h0=890mm,角桩剪跨比λ=a
由于基础货币能为金融当局所直接控制,在()不变的条件下,金融当局即可通过控制基础货币来控制整个货币供给量。
安全生产监督机构以及安全生产监督人员应当经()考核合格。
保险公司定向募集的、期限在5年以上(含5年)、本金和利息的清偿顺序列于保单责任和其他负债之后、先于保险公司股权资本的保险公司债务属于( )。
A.条件(1)充分,但条件(2)不充分。B.条件(2)充分,但条件(1)不充分。C.条件(1)和(2)单独都不充分,但条件(1)和条件(2)联合起来充分。D.条件(1)充分,条件(2)也充分。E.条件(1)和(2)单独都不充分,条件(1)和条件(2
设二次型f(x1,x2,x3)=x12-x22+2ax1x3+4x2x3的负惯性指数是1,则a的取值范围是________.
Whatdoesthemonologuemainlydiscuss?
ThenativepeopleofNorthandSouthAmericaweregiventhename"Indians"bythe【21】ChristopherColumbus.Hethoughthehadrea
最新回复
(
0
)