2023年5月程序员 模拟二 下午之三
摘要:对于【程序员】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年5月程序员 模拟二 下午】部分试题的详解,一起来看看吧~1、试题三(共15分,每空3分)【说明1】函数deldigit(char*s)的功能是将字
1、试题三(共15分,每空3分)【说明1】函数deldigit(char*s)的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再复制给s。【C函数】【C函数】void deldigit(char *s){ char *t = (char *)malloc( (1) ); //申请串空间 int i, k = 0; if (!t) return; for(i = 0; i < strlen(s); i++)if ( !(*(s+i)>='0' && *(s+i)<='9') ) { t[k++] = (2) ; } (3) = '\0'; //设置串结束标志 strcpy(s,t); free(t);} 【说明2】函数reverse(char *s, int len)的功能是用递归方式逆置长度为len的字符串s。例如,若串s的内容为“abcd”,则逆置后其内容变为“dcba”。【C函数】void reverse(char *s, int len){ char ch; if ( (4) ) {ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse( (5) ); }}
答案:
(1) strlen(s)+1
(2) *(s+i),或s[i],或其他等价表示
(3) *(t+k),或t[k],或其他等价表示
(4) len>1,或len>=1,或其他等价表示
(5) s+1,len-2
答题解析:
函数deldigit(char *s)的思路是先申请一个与S等长的临时字符串空间并令t指向它,则(1)完成该步骤。S的长度用strlen(s)+1求得,其中加1的原因是函数strlen(s)计算s所指向字符串的长度时,没有包含串结束标志字符“\0”。当然申请比strlen(s)+1更大的存储区也可以,但是没有必要。这个函数在题“i=’0’*(s+i)=’9’ ”表示用ASCI 码逐个判断s中的字符是否为数字,如果是非数字,则该字符暂存入该空间t.,因此(2)中应该填写s[i]。因为每次赋值之后,k都自动加1,所以,设置串尾结束符时,k不必再加1,直接将(3)填为t[k]。
函数reverse(char *s, int len),函数中又有reverse函数,说明本程序是递归函数。那么需要判断该串是否为只含有1的字母的串。当长度大于1时,才需要继续递归,因此,(4)中应填“len1”。本函数逆置字符串的做法是将串的第一字符和最后一个字符对换。然后递归剩下的字符串。因此,(5)中应该填“s+1,len-2”。
查看完整试题>>>
软考资料: 2024年软考论文范文> 软考考试核心重点难点汇总> 查看更多>
备考刷题:章节练习+每日一练> 软考历年试题+模拟题>查看更多>