首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C++中的函数计算字符串中出现的字符类型?

如何使用C++中的函数计算字符串中出现的字符类型?
EN

Stack Overflow用户
提问于 2021-02-24 23:09:11
回答 1查看 79关注 0票数 0

我分配的任务是编写一个C++程序,它接受两个变量,一个字符值和一个字符串值。然后,通过使用名为int CountCharacters()的用户定义函数,程序应该计算用户输入的字符值在用户输入的字符串值中的次数。

到目前为止,我已经能够编码我认为至少是一个良好的基础,但当我运行它,我得到一个疯狂的数字,也改变了每次我运行的程序。

下面是我到目前为止所写的程序:

测试输入:n周一

预期产出:1

接收输出:22091

代码语言:javascript
复制
#include <iostream>
using namespace std;

int CountCharacters(char userChar, string userString)  {
   
   int casesFound = 0;
   int n = userString.length();
   
   for (int i = 1; i < n; i++)  {
      if (userString[i] == userChar)  {
         casesFound = casesFound + 1;
      }
   }
   
   return casesFound;
}

int main() {
   
   char cVal;
   string sVal;
   int casesFound;
   
   cin >> cVal;
   getline(cin, sVal);
   
   CountCharacters(cVal, sVal);
   
   cout << casesFound << endl;

   return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 23:25:05

得到不同数字的原因是,输出casesFound时不给它赋值。读取未初始化的变量使程序具有未定义行为,因此任何事情都可能发生。如果您的函数返回了1,那么它就无关紧要了,因为您没有将该值分配给casesFound。您可以将返回的函数的值分配给casesfound,如下所示:

代码语言:javascript
复制
casesFound = CountCharacters(cVal,sVal);

然后继续到

代码语言:javascript
复制
cout<<casesFound;

或者,您可以直接打印返回的值,而不必将其赋值给变量:

代码语言:javascript
复制
std::cout << CountCharacters(cVal, sVal) << '\n';

还请注意,您的循环中有错误。数组和字符串等中的第一个索引是0 in C++,而不是1,因此您将无法在Monday中计算M

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66360124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档