C++统计多字符串元音数代码修改:逐行输出各字符串元音数而非总和
C++逐行统计输入字符串元音数量 修复方案
原代码问题
- 缺失必要头文件:
#include后未引入<string>,无法正常使用std::string类 - 计数变量作用域错误:元音计数变量
vowels定义在循环外部,会累计所有输入字符串的元音总数,无法单独统计单个字符串的元音数 - 循环逻辑顺序错误:do-while结构会先执行循环体、再执行
cin >> name读入输入,导致第一次循环处理的是空字符串,第一个有效输入会延迟到下一轮才处理 - 输出位置错误:打印语句放在循环结束后,只会输出累计的总元音数,不会逐行输出每个字符串的统计结果
- 存在冗余无效代码:
count变量无实际使用场景,对应的累加逻辑也无意义,可直接删除
修正后代码
#include <iostream> #include <string> using namespace std; int main(){ string name; // 每次读入字符串先判断是否为终止词end while(cin >> name && name != "end") { // 每个字符串单独统计,每次初始化计数为0 int vowels = 0; for(int i = 0; i < name.length(); ++i) { if(name[i]=='a' || name[i]=='A' || name[i]=='e' || name[i]=='E' || name[i]=='i' || name[i]=='I' || name[i]=='o' || name[i]=='O' || name[i]=='u' || name[i]=='U') { vowels++; } } // 统计完当前字符串直接输出结果 cout << vowels << endl; } return 0; }
运行效果
输入示例:
love run test tryy end
输出结果:
2 1 1 0
完全匹配需求。
内容的提问来源于stack exchange,提问作者Kholofelo
相关产品推荐
相关产品推荐

