阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。【说明】函数removeDup

9 查阅

阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对

应栏内。

【说明】

函数removeDuplicates(char *str)的功能是移除给定字符串中的重复字符,使每种字

符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设

置标志,并将其后的非重复字符前移。例如,若str指向的字符串为“aaabbbbscbsss”,

则函数运行后该字符串为“abse”。

【c代码】

void removeDuplicates (char *str)

int i,len = strlen (str); /*求字符串长度*/

If( (l) )return;/*空串或长度为1的字符串无需处理*l

for(i=0;i<len;i++) {

Int flag =O; /*字符是否重复标志*/

int m:

for(m =( 2 ); m<len; m++){

if(str[i]==str[m] ) {

__(3)_;break;

}

}

if (flag){

Int n,idx = m;

/*字符串第idx字符之后、与str [i]不同的字符向前移*/

For( n=idx+l; n<len. n++)

if ( str[n]!= str[i]) {

str[idx]= str[n]; (4);

}

Str[(5)]=\0; /* 设置字符串结束标志*/

}

}

}

参考答案:

本题考查C语言基本应用。题目要求在阅读理解代码说明的前提下完善代码。字符串的运算处理是c程序中常见的基本应用。根据注释,空(1)处应填入的内容很明确,为“len=1”或其等价表示。要消除字符串中的重复字符,需要扫描字符串,这通过下面的代码来实现:For(i=0;ilen;i++){intflag=Oj;/*字符是否重复标志*/intm:for(m=(2);m<len;m++)(if(str[i]==str[m]{(3),break;}*}......上面代码中.循环变量i用于顺序地记下字符串中每个不

软考初级