软考真题
第28题
【说明】
函数strCompress(char *s)对小写英文字母串进行压缩,其基本思路是:如果串长小于3则不压缩,否则对连续出现的同一字符,用该字符及其个数来表示。例如,字符串
"abbbcdddddddeeed”压缩后表示为 Mab3cd7e3d"。
如图4-1所示,在计算连续出现的同一字符个数时,借助字符指针s和计数变量k表示串中的字符,当s所指字符与其后的第k个字符不同时,一个重复字符串的压缩参数即可确定。

【C代码】
#include
#include
#include
void strCompress (char *) ;

int main( )
{
char test[] = "abbbcdddddddeeed";

printf("%s/n", test);
( );//调用strCompress实现test中字符串的压缩
printf("%s/n", test);

return 0;
}

void strCompress (char *str)
{
int i;
char *p,tstr[ll] ; //在tstr中以字符串方式表示同一字符连续出现的次数
char *s = str,*buf; //借助buf暂存压缩后的字符串

if (strlen (str)<3)
return;

buf = (char *)malloc(strlen(str)*sizeof(char)+1);
if (!buf)
return;

for( i = 0; *s;){
int k = 1; //用k累计当前字符的连续出现次数

buf [ ( ) ] = *s; //先将当前字符写入buf []

if(s[1] &&*s==*(s+1)){
k++;
while ( ( ) ) k++;

sprintf (tstr, ”%d", k) ; //将k的值转换为数字串暂存在tstr中

//将暂存在tstr中的数字字符逐个写入buf []
p = tstr;
while ( *p )
buf[i++] =( );
}
s += k; //跳过连续出现的同一字符,使s指向下一个不同的字符
}
( )= '/0'; //设置字符串结尾
strcpy (str, buf) ; //将暂存在buf中的压缩字符串复制给原串

free (buf);
}
(共15分)
阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。
第9章C程序设计
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2019年 下半年 下午试卷 案例

笔记

云云

请先在App中激活(应用市场搜“软考真题”)

2023-05-22


云云

请先在App中激活(应用市场搜“软考真题”)

2023-05-22


答题卡
加油