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