如何移除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
相关产品推荐
相关产品推荐

