活动介绍

2017060201009(蒋程)实验二,删除重复字符串1

preview
需积分: 0 4 下载量 87 浏览量 更新于2022-08-08 收藏 79KB DOCX 举报
实验报告 - 删除字符串中的重复字符 在本实验中,主要目标是编写一个C或C++程序,该程序能够接收一个字符串作为输入,然后删除其中连续重复的非字母和非数字字符。这个任务旨在提升对字符串处理、字符判断以及循环结构的理解和运用。 **实验需求** 1. 用户输入一个字符串,程序会自动处理,删除其中连续重复的、非字母且非数字的字符。 2. 如果输入的字符串长度超过50个字符,程序只处理前50个字符,并输出处理后的字符串。 3. 程序需要检查相邻字符,如果它们相同并且不是字母或数字,就将这一连续重复的部分删除。 **设计过程** 实现这个功能的关键在于遍历字符串并进行条件判断。以下是一个简化版的伪代码来说明这个过程: ```markdown int i, j, k; char str1[51], str2[51]; // 获取用户输入 gets(str1); // 遍历字符串 for (i = 0; k = 0; str1[i] != '\0') { // 判断相邻字符是否相等,且是否为非字母和非数字 if (str1[i] == str1[i + 1] && !('A' <= str1[i] && str1[i] <= 'z' && '0' <= str1[i] && str1[i] <= '9')) { // 找到连续重复的部分 j = 1; while (str1[i] == str1[i + j]) { j++; } // 跳过重复部分 i = i + j - 1; } else { // 复制非重复字符到新字符串 str2[k] = str1[i]; i++; k++; } // 结束字符串 str2[k] = '\0'; } // 输出处理后的字符串 puts(str2); ``` 在这个伪代码中,`str1` 存储原始输入字符串,`str2` 存储处理后的字符串。`i` 和 `k` 分别用于跟踪原始和处理后字符串的当前位置。`for` 循环遍历整个字符串,`if` 语句检查相邻字符是否满足删除条件。如果满足,使用 `while` 循环找到连续重复部分的长度,然后跳过这些字符。否则,将当前字符复制到 `str2` 中。用 `'\0'` 终止处理后的字符串,并通过 `puts` 函数输出结果。 **流程图** 虽然没有提供具体的流程图,但可以想象一个流程图会包含以下步骤: 1. 获取用户输入 2. 初始化变量 3. 遍历输入字符串 4. 检查相邻字符 5. 判断字符是否为字母或数字 6. 若非字母或数字且重复,跳过重复部分 7. 否则,将字符复制到结果字符串 8. 继续遍历,直到字符串结束 9. 输出处理后的字符串 **测试** 为了确保程序的正确性,需要进行多组测试,包括但不限于: 1. 空字符串 2. 只含有字母和数字的字符串 3. 只含有非字母和非数字字符的字符串 4. 包含各种字符类型的混合字符串 5. 边界情况,如字符串长度达到50个字符 通过这些测试,可以验证程序是否能正确处理各种输入,并按预期删除重复字符。 总结,这个实验主要涉及C/C++编程中的字符串操作、字符类型判断、循环结构以及基本的输入输出操作。它有助于提高对字符串处理算法的理解,以及如何在实际编程中应用这些概念。
身份认证 购VIP最低享 7 折!
30元优惠券
乔木Leo
  • 粉丝: 33
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源