为什么此代码会崩溃?(我是C 的新手)

Why will this code crash? (I am new to C++)

本文关键字:我是 新手 代码 崩溃 为什么      更新时间:2023-10-16
#include <iostream>
#include <vector>
using namespace std;
bool checker(int a, int b){
for(int i = 0; i < a; i++){
    if(a % i == 0 && b % i == 0){
        return true;
    }
}
return false;
}
int main(){
int vectorNo;
cin >> vectorNo;
bool foundIt = false;
vector<int> nums;
vector<int> results;
for(int i = 0; i < vectorNo; i++){
    int a;
    cin >> a;
    nums.push_back(a);
}
for(int i = 0; i < nums.size(); i++){
    for(int j = 0; j < nums.size(); j++){
        if(j > i){
            if(checker(nums[j], nums[i])){
                foundIt = true;
                results.push_back(j);
                break;
            }
        }
    }
    if(foundIt){
        foundIt = false;
    }else{
        results.push_back(-1);
    }
}
for(int i = 0; i < results.size(); i++){
    int thisInt = results[i];
    cout << thisInt << ", ";
}
return 0;

}

对我来说,这个代码似乎很好,尽管当我尝试运行它时,它崩溃了。在控制台日志记录时,当我尝试在if内运行Checker((时,它似乎停止工作。发生这种情况的特定原因?

checker中的循环以 i=0开头,即,您执行 a% 0,这将导致除零异常。

相关文章: