试题二(共15分) 阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。 【

7 查阅

试题二(共15分)

阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。

【说明1】 函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与 s 等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。

【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) );

}

}

参考答案:

试题二(共15分) (1)strlen(s)+1(3分) 其中,strlen(s)不可缺少,1可用大于1的任何一个整数代替 若考生解答为strlen(s),则给2分(2)*(s+i),或s[i],或其等价表示(3分)(3)*(t+k),或t[k] ,或其等价表示(3分)(4)len > 1,或len >= 1,或其等价表示(3分)(5)s+1,len-2(3分)

软考初级