在 C++ 中计算字符串中的辅音(迭代和递归方法)
给定一个任意长度的字符串 str,任务是使用迭代和递归方法计算给定字符串中的辅音数量。
辅音是那些不是元音的字母,即除 a、i、e、o、u 之外的字母都被视为辅音。因此,在下面的程序中,我们需要找出字符串中除这些字母之外的字母数量。
递归和迭代都重复执行一组指令。递归是函数中的语句重复调用自身。迭代是循环重复执行直到控制条件变为假。递归和迭代之间的主要区别在于,递归是一个过程,始终应用于函数,而迭代应用于我们希望重复执行的指令集。
例如
输入 − 字符串 str = “tutorials point” 输出 − 计数为 8
解释 − 在给定的字符串 str 中,总共有 8 个辅音可用,分别是 t、t、r、l、s、p、n 和 t。
输入 − 字符串 str = “a e io u” 输出 −计数为 0
解释 −在给定的字符串 str 中,没有可用的辅音,而是只有元音,因此计数为 0。
迭代
以下程序中使用的方法如下
将字符串输入变量 str
使用 length() 函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
获取一个临时变量,用于存储元素的数量。
从 i 开始循环,直到 i 小于字符串的长度
在循环内部,检查 str[i] 是否为辅音,然后将 count 的值增加 1
返回 count
打印结果。
示例
// 迭代 CPP 程序 #include <iostream> using namespace std; // 检查辅音的函数 bool consonant(char ch){ // 处理小写 ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } //计数辅音的函数 int countconsonants(string s){ int result = 0; for (int i = 0; i < s.length(); i++){ // 检查字符是否为辅音 if (consonant(s[i])){ ++result; } } return result; } // main 主函数 int main(){ string s = "wx abc def"; cout <<"count is: "<<countconsonants(s); return 0; }
输出
如果运行上述代码,我们将得到以下输出
count is: 6
递归
以下程序中使用的方法如下
将字符串输入变量 str
使用 length() 函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
获取一个临时变量来存储元素的数量。
创建一个递归函数,该函数将调用自身来计算字符串中的辅音
检查大小是否为 1,然后返回 str[0]。
然后,将 recursive_call_to_function 返回为 (str, size-1) + 检查字符是否为字符串(str[size-1])
示例
// 递归 CPP 程序 #include <iostream> using namespace std; // 检查辅音的函数 bool consonant(char ch){ // 转换为小写 ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } // 计算辅音的总数 int consonantcount(string str, int n){ if (n == 1){ return consonant(str[0]); } return consonantcount(str, n - 1) + consonant(str[n-1]); } int main(){ string str = "wx abc def"; cout <<"count is: "<<consonantcount(str, str.length()); return 0; }
输出
如果运行上述代码,我们将得到以下输出 −
count is: 6