返回 课程

信奥AC之路-3级

0% 完成
0/0 步骤
  1. 第一课:数组基础
    4 主题|小节
  2. 第二课:数组基础二
    6 主题|小节
  3. 第三课:数组基础三
    6 主题|小节
  4. 第四课:数组基础四
    7 主题|小节
  5. 第五课:数组基础五
    5 主题|小节
  6. 第六课:数组用于统计,去重,排序
    5 主题|小节
  7. 第七课:冒泡排序
    6 主题|小节
  8. 第八课:数组连续性元素
    6 主题|小节
  9. 第九课:数组综合一
    7 主题|小节
  10. 第十课:字符数组
    7 主题|小节
  11. 第十一课:字符数组基础应用
    5 主题|小节
  12. 第十二课:字符数组基础应用二
    6 主题|小节
  13. 第十三课:字符数组进阶
    6 主题|小节
  14. 第十四课:字符串进阶二
    6 主题|小节
  15. 第十五课:字符串(STL)
    9 主题|小节
  16. 第十六课:字符串基础
    6 主题|小节
  17. 第十七课:字符串函数
    6 主题|小节
  18. 第十八课:字符串函数二
    4 主题|小节
  19. 第十九课:sort函数
    7 主题|小节
  20. 第二十课:字符串进阶
    7 主题|小节
  21. 第二十一课:字符串进阶二
    6 主题|小节
  22. 第二十二课:进制转换--十进制转其他进制
    5 主题|小节
  23. 第二十三课:进制转换--其他进制转十进制
    5 主题|小节
  24. 第二十四课:二进制,八进制,十六进制转换
    5 主题|小节
  25. 第二十五课:数据编码基础
    6 主题|小节
  26. 第二十六课:位运算基础
    6 主题|小节
课 11, 主题|小节 3
进行中

11.3 字符串过滤

2025年9月22日
课 进展
0% 完成

“在处理文本时,我们经常需要从复杂的字符串中提取有用的信息,”我解释道,”接下来我们学习如何过滤和保留特定的字符。”

11.3.1 保留整数

题目描述: 输入一个字符串,把其中的连续非数字字符子串换成一个*,数字字符依次保留。

输入格式: 输入为一行字符串,可能包含空格,长度不超过80个字符。

输出格式: 输出处理好的字符串。

样例输入

$Ts!47&*s456  a23* +B9

样例输出

*47*456*23*9

代码实现

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char a[100];                    // 定义字符数组
    cin.getline(a, 99);            // 读取包含空格的字符串
    bool flag = true;              // 标记是否需要输出*
    
    for(int i = 0; i < strlen(a); i++) {
        if(a[i] >= '0' && a[i] <= '9') {      // 判断是否为数字
            flag = true;                       // 重置标记
            cout << a[i];                      // 输出数字
        } else if(flag) {                      // 非数字且标记为true
            cout << '*';                       // 输出*
            flag = false;                      // 设置标记为false
        }
        // 连续的非数字字符只输出一个*
    }
    
    return 0;
}

算法解析

  1. 使用布尔变量flag控制*的输出
  2. 遇到数字时:输出数字,重置flag为true
  3. 遇到非数字且flag为true时:输出*,设置flag为false
  4. 这样确保连续的非数字字符只替换为一个*