You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除C++元音移除程序中的continue语句?

移除字符数组中元音的无continue版本实现

嘿,我来帮你重构这段代码,去掉continue语句同时实现移除元音的功能!首先咱们先理清楚原代码的核心逻辑——跳过元音字符,把非元音字符保留到结果数组里。原代码用continue来跳过元音的添加操作,其实咱们可以换个更直观的思路:只在字符不是元音的时候,才把它加入结果数组,这样就完全不需要continue了。

重构后的代码

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

int main() {
    char s[21], afterElimination[21]; // 结果数组和原数组同大小,避免溢出风险
    cin.get(s, 20);
    int h = 0;
    const char vowels[] = "aeiouAEIOU"; // 新增大写元音,覆盖更多场景(可根据需求去掉)
    int n = strlen(s);
    
    for (int i = 0; i < n; ++i) {
        // 仅当当前字符不是元音时,才添加到结果数组
        if (!strchr(vowels, s[i])) {
            afterElimination[h++] = s[i];
        }
        // 元音字符会自动跳过处理,不需要continue
    }
    afterElimination[h] = '\0'; // 用'\0'作为字符串结束符,比NULL更规范
    
    cout << afterElimination << endl;
    return 0;
}

关键改动说明

  • 移除了continue和冗余变量:原代码里的VowelPos和continue都是为了绕开元音的添加操作,现在直接通过条件判断筛选非元音字符,逻辑更清晰,代码更简洁。
  • 优化数组大小:原代码把afterElimination设为19,当原字符串全是非元音时会出现数组越界,现在设为和原数组一样的21,更安全。
  • 支持大写元音:新增了大写的AEIOU,如果你的需求只需要处理小写,直接去掉即可。
  • 规范字符串结束符:用'\0'代替NULL,NULL通常用于指针,'\0'才是标准的C/C++字符串结束符。

这样修改后的代码功能和原代码一致,但可读性和健壮性都更好,而且完全不需要continue语句。

内容的提问来源于stack exchange,提问作者MikeyJY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:06:56