矢量功能 - 崩溃

时间:2013-08-03 10:57:50

标签: c++

任何人都可以告诉我这个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已停止工作”弹出窗口。 我猜这与将除数附加到函数内定义的向量有关,但我不知道为什么这是非法的。我是一个新秀。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

n % i i中,{{1}}从0开始>&gt;除以0 =&gt;崩溃。

答案 1 :(得分:2)

当你拨打“n%i”时,它将n除以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());
}