-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 を実行すると、標準の Windows "x has stopped working" ポップアップが表示されます。これは、関数内で定義されたベクトルに除数を追加することと関係があると推測していますが、なぜこれが違法なのかわかりません。私は少し新人です。

助けてくれてありがとう!

4

2 に答える 2

2

あなたのn % iでは、i0 => 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 に答える