-1

谁能告诉我这个 C++ 代码有什么问题?

int countit(int n) {
vector<int>divisors;
for (int i = 0; i < n; i++) {
    if (n % i == 0) divisors.push_back(i);
    }
return divisors.size();
}

我没有编译错误,但是当我运行 .exe 时,我得到一个标准的窗口“x 已停止工作”弹出窗口。我猜这与将除数附加到函数内部定义的向量有关,但我不知道为什么这是非法的。我有点菜鸟。

谢谢您的帮助!

4

2 回答 2

2

在您的n % i,i从 0 => 除以 0 => 崩溃开始。

于 2013-08-03T11:00:39.813 回答
2

当您调用“n % i”时,它会将 n 除以 i。所以当 i 为 0 时,它会崩溃。因为除以 0 是非法的。

使固定:

int countit(int n) {
    vector<int> divisors;
    for (int i = 1; i < n; i++) {
        if (n % i == 0) {
            divisors.push_back(i);
        }
    }
    return (divisors.size());
}
于 2013-08-03T11:02:00.850 回答