首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 本题中的函数encode()和decode()分别实现对字符串的变换和复原。其中变换函数encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串:
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 本题中的函数encode()和decode()分别实现对字符串的变换和复原。其中变换函数encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串:
admin
2010-01-15
62
问题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
本题中的函数encode()和decode()分别实现对字符串的变换和复原。其中变换函数encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串:
(1)若已知字符串的当前字符不是数字字符,则将该字符复制在新字符串中。
(2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中。
(3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中。
(4)以上述一次变换为一组,在不同组之间另插入一个下划线“_”用于分隔。例如,encode()函数对字符串26a3t2的变换结果为666_a_tttt_2。
复原函数decode()做与变换函数encode()相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中略过变换函数,为不同组之间添加的一个下划线字符。
假定调用变换函数encode()时的已知字符串中不含下划线字符。
【函数】
int encode(char *instr, char *outstr){
char *ip, *op, c; int k,n;
ip=instr; op=outstr;
while(*ip){
if(*ip>=’0’ && *ip<=’9’ && *(ip+1)){
n=(1);
c=(2);
for(k=0; k<n;k++)
*op++=c;
}
else (3);
*op++=’_’;
ip++;
}
if(op>outstr)op--;
(4);
return op-outstr;
}
int decode(char *instr, char *outstr){
char *ip, *op, c; int n;
ip=instr; op=outstr;
while(*ip){
c=*ip; n=0;
while(*ip==c&&n<10){
ip++; n++;
}
if((5))*op++=’0’+n-1;
*op++=c;
if((6))ip++;
}
*op=’\0’;
return op-outstr;
}
选项
答案
(1)*ip-’0’+1 (2)*++ip (3)*op++=*ip (4)*op=’\0’ (5)n>1 (6)*ip==’_’
解析
本题考查C语言对字符串的处理。
本题对字符串按一定要求进行编码解码,所以编码规则至关重要。在做题前一定要看清规则,并按规则对程序说明中所举的例子进行手动的编码解码工作。必要时,可以将其和程序比较着看。
下面我们来开始分析程序。
int encode(char *instr, char *outstr){
char *ip, *op, c; int k, n;
ip=instr; op=outstr;
while(*ip){
if(*ip>=’0’ && *ip<=’9’ && *(ip+1)){
上面的if条件表明,只有当*ip为数字,且其下一个字符不为空时执行下面的程序段。也就是说,这是编码规则(3)的处理代码。
n=(1);
c=(2);
从下面的循环结合编码规则(3)的“设该数字字符的面值为n,则将它的后继字符 (包括后继字符是一个数字字符)重复复制n+1次到新字符串中”,可以看出这里的n应是ip所指数字加1,又因为ip指示的是字符型数据,所以(1)空应填*ip-’0’+1。c应是ip+1所指示的字符,又因为此段程序中只有一个ip++语句,但这里的操作相当于对两个字符进行了编码,ip要向后跳两个空间,所以(2)空应填*++ip。
for(k=0;k<n;k++)
*op++=c;
}
else (3);
这里对应规则(1)和(2)直接把字符拷贝到新串。所以(3)空应填*op++=*ip。
*op++=’_’;
ip++;
}
if(op>outstr)op--;
(4);
这里应是给新串outstr加上字符串结束符’\0’。因为如果执行了上面的while循环,则会把字符串26a3t2变换结果为666_a_tttt_2_,而不是程序说明中的666_a_tttt_2。因为上面的while循环中有“while(..)(...*op++=’_’;ip++;}”。所以要把最后一个’_’用字符串结束符’\0’替换掉,刚好“if(op>outstr)op--;”把op指针定位到了最后的’_’。所以(4)空应填*op=’\0’。这里要注意一点,“if(op>outstr)op--”不能直接写成op--。因为当输入串instr为空时,outstr也为空,while()不作处理,则op=outstr。这种情况下,直接把’\0’写到*outstr,表示outstr是一个空串。
return op-outstr;
}
接下来我们分析解码程序decode()。
int decode(char *instr, char *outstr){
char *ip, *op, c; int n;
ip=instr; op=outstr;
while(*ip){
c=*ip;n=0;
while(*ip==c&&n<10){
ip++; n++;
}
上面的循环用于统计字符c的个数。
if((5))*op++=’0’+n-1;
此处把统计个数存到输出串,则表示当前情况符合编码规则(3)。所以(5)空应填n>1。
*op++=c;
if((6))ip++;
因为解码规则中有“并在复原过程中略过变换函数,为不同组之间添加的一个下划线字符”。所以(6)空应填*ip==’_’。
转载请注明原文地址:https://kaotiyun.com/show/iIjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
为在Excel2010的A1单元格中生成一个60到100之间的随机数,则应在A1单元格中输入________________。
在Excel2010中,C3:C7单元格中的值分别为10、OK、20、YES和48,在。D7单元格中输入函数“=COUNT(C3:C7)”,按回车键后,D7单元格中显示的值为________________。
在收集、整理、存储大数据时,删除重复数据的作用不包括________________。
在Word2007中,为使内容更加醒目,文章更具有条理性,可在若干段落前面添加__________。
()是一种保护数据的安全策略,该策略使用户只能感知自己将用到的信息,对于其他信息都加以屏蔽和保护,使信息泄露、数据完整性受到损害的可能性最小。
在Word中采用(47)可实现下图显示的排版格式。
在Excel2007中,如果在A1单元格输入“计算机”,在A2单元格输入“软件资格考试”,在A3单元格输入“=A1&A2”,按回车键后,结果为______。
某信息处理技术员正在做大批数据处理的大项目时,领导又交宋了另一项临时性的紧迫工作,要求优先处理。该信息处理技术员需要转而做新的工作,他对原工作的处理方式应该是(69)。
框架在网页布局中主要起什么作用?主页中定义了几个框架,分别显示哪个文档?网页中使用的数据库连接引擎是什么?连接的后台数据库文件名是什么?
某计算机字长为8位,它用补码、原码或反码来表示带符号的二进制整数(最高一位为符号位),则机器代码11111111所表示的十进制真值分别为(4)、(5)或(6)。
随机试题
周转材料
Socialcustomsandwaysofbehavingchange.Thingswhichwereconsideredimpolitemanyyearsagoarenowacceptable.Justafew
椿皮覆盆子
甲公司与乙公司订立货物买卖合同,约定出卖人甲公司将货物送至丙公司,经丙公司验收合格后,乙公司应付清货款,甲公司在送货前发现丙公司已濒丁破产,遂未按时送货。根据合同法律制度的规定,下列各项中,正确的是()。
以下项目中与信用条件无关的是()。
商业票据贴现市场上的各种贴现形式,表面上是票据的转让与再转让,实际上是资金的融通。()
(单选题)一位现代学者在评论一部历史文献时说:“在这里,孔子己经换上了西装。”这一评论指的是()。
某企业职工关系。EMP(E_no,E_name,DEPT,E_addr,E_tel)中的属性分别表示职工号、姓名、部门、地址和电话;经费关系FUNDS(E_no,E_limit,E_used)中的属性分别表示职工号、总经费金额和已花费金额。若要查询部门为“
A、 B、 C、 B女士问:“你为什么这么久才来?”,也就是询问耽搁的理由,bestuckintraffic意为“遇到了塞车”。(A)以what开头的提问,不能用Yes/No来回答。(C)此题并不是问花了多少时间。
Insomecasesnowadaysconcerningjobhunting,onehadto______1,000competitorstogetaposition.
最新回复
(
0
)