我的程序中的逻辑出了什么问题

What is wrong with the logic in my program?

本文关键字:什么 问题 程序 我的      更新时间:2023-10-16

我的任务是创建一个函数来标识数组中出现的次数,但我没有得到正确的结果。这是我写的函数,我省略了程序的其余部分。

int countOccurences(int b[], int size, int x)
{
    int occ = x;
    for(int i = 0; i < size; i++)
    {
            if(b[i] == occ)
            occ++;
    }
    cout << occ << endl;
    return occ;
}

如果occ是指出现的次数,则应将其初始化为零,而不是x

并且应该在b[i]x之间进行比较,而不是在b[i]occ之间进行比较。


而且,顺便说一句(不影响实际逻辑),在实用程序函数中实际打印返回值也是非常不寻常的,这显然是为了简单地返回计数,但可能只是为了调试目的。

您应该确保forif之间的缩进和大括号的使用是一致的,这将使代码更易于维护。

除此之外,C++在<algorithm>中拥有一个std::count()方法,它将在不必编写函数的情况下为您解决问题(尽管这可能是一个教育问题,目的是学习如何编写这样的代码,而不是使用现成的库函数来为您做繁重的工作)。

int countOccurences(int b[], const unsigned int size, const int x)
{
    int occ = 0;
    for(unsigned int i = 0; i < size; i++)
    {
            if(b[i] == x)
            {
                occ++;
            }
    }
    std::cout << occ << std::endl;
    return occ;
}
  • occ应从零开始
  • 您应该比较b[i]x
  • 数组索引应该是无符号的
  • 为什么不常量正确
  • using namespace std;是不好的做法