【发布时间】:2020-08-17 13:42:55
【问题描述】:
我正在完成一项任务以完成bool isEven(char* s, char* v) 的功能。该函数的目的是计算字符串(由s 表示)中指定的某些字母(由v 表示)的出现次数。 s 和 v 是指向包含字符的数组的指针。
如果在s 中找到来自v 的字母的实例数是偶数,则该函数返回true。例如,给定字符串"once upon a time"和要计算的字母字符串,如元音"aeiou",它会返回false,因为有7个元音(元音只是一个例子,它可以是任何随机字符串字母)。
我有一个变量count 来计算v 中的任何字母出现在s 中的实例。当我运行我的程序时,我的计数总是返回为0。我究竟做错了什么?谁能告诉我如何更正我的代码来解决这个问题?
我也尝试使用嵌套的 while 循环并得到相同的结果。
bool isEven(char* s, char* v) {
int count = 0;
// iterate through de-referenced strings
for (int i = 0; *(s+i) != '\0'; i++) {
for (int j = 0; *(v+j) != '\0'; j++) {
if (*(s+i) == *(v+j)) {
count++;
}
}
}
// check count output
std::cout << count;
if (count % 2 == 0) {
return true;
}
else {
return false;
}
}
【问题讨论】:
-
std::cout << count;-- 因为上面的return语句,这永远不会被执行 -
你弄错了赋值运算符
=和比较运算符==-- 应该用==或!=替换for循环中的所有= -
for (int i = 0; *(s+i) = '\0'; i++) ...我猜他的意思是:for (int i = 0; *(s + i) != '\0'; i++) - 不等于。
-
@lenik 我会解决这个问题 - 但我正在测试函数而不是 bool(作为 int 类型),只是为了看看我的计数器是否在工作,然后返回计数时我仍然得到 0。
-
@LinuXMan 是的,你是对的 - 我刚刚解决了这个问题,但我的计数仍然返回 0。
标签: c++ arrays string pointers char