我分配的任务是编写一个C++程序,它接受两个变量,一个字符值和一个字符串值。然后,通过使用名为int CountCharacters()的用户定义函数,程序应该计算用户输入的字符值在用户输入的字符串值中的次数。
到目前为止,我已经能够编码我认为至少是一个良好的基础,但当我运行它,我得到一个疯狂的数字,也改变了每次我运行的程序。
下面是我到目前为止所写的程序:
测试输入:n周一
预期产出:1
接收输出:22091
#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;
}发布于 2021-02-24 23:25:05
得到不同数字的原因是,输出casesFound时不给它赋值。读取未初始化的变量使程序具有未定义行为,因此任何事情都可能发生。如果您的函数返回了1,那么它就无关紧要了,因为您没有将该值分配给casesFound。您可以将返回的函数的值分配给casesfound,如下所示:
casesFound = CountCharacters(cVal,sVal);然后继续到
cout<<casesFound;或者,您可以直接打印返回的值,而不必将其赋值给变量:
std::cout << CountCharacters(cVal, sVal) << '\n';还请注意,您的循环中有错误。数组和字符串等中的第一个索引是0 in C++,而不是1,因此您将无法在Monday中计算M。
https://stackoverflow.com/questions/66360124
复制相似问题