在 C++ 中计算字符串中的辅音(迭代和递归方法)

c++server side programmingprogramming更新于 2024/9/27 6:43:00

给定一个任意长度的字符串 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

相关文章