c++ - 退出,分段错误
问题描述
该问题的输入是第一个数字,表示将输入多少案例进行分析。
输入:
3
8 12
9 27
259 111
第一个数字表示将有 3 个案例。接下来的 3 行是案例。程序必须输出 3 个案例的 GCD(最大公约数)。
4
9
37
我编写的代码如下所示:
#include <iostream>
#include <vector>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int N;
std::cin >> N;
int i = 0;
std::vector<int> cards;
while (i <= N) {
i++;
int F1, F2;
std::cin >> F1 >> F2;
cards[i] = gcd(F1, F2);
}
for (int j; j <= N; i++) {
i++;
std::cout << cards[i] << "\n";
}
}
它读取第一个整数(测试用例的数量),运行一次循环(读取一个测试用例)并停止运行。终端输出exited, segmentation fault
。问题是什么?
解决方案
在您的代码中存在一些问题,首先您没有设置向量的大小,结果就像它的长度为 0。
另一个错误是循环;事实上,在执行所有其他操作之前,首先将 i 加 1,这样您将从向量的第二个分量开始插入(向量从 0 开始索引)。
在第二个循环中也存在一些问题,例如,您声明了一个变量 j 它完全没用,因为在以下操作中您仍然使用 i (设置在前一个循环的结束值,while 一个)。
尝试纠正这些事情并理解它,这样你也会理解错误的原因,这在 C++ 中很常见。
我希望我对你有所帮助:)
推荐阅读
- python - 如何在我的农场命令中插入变量 - Discord.py
- kotlin - 如何使用 kotlin 在其他类中调用按钮
- c# - 在 C# 异步和等待全局变量崩溃
- java - 如何在服务中的数组中保存位置数据并将该数组发送到活动/片段?[安卓/Java]
- dictionary - 如何使用字典在python中创建多维结构数组
- django - 在 Django 中的 ModelForm 中更新/更改当前用户实例的信息
- c# - 获取错误作为@Parameter1 不是过程的参数
- angular - openlayers 地图未显示在我的应用程序中,尽管它似乎已正确加载
- angular - Angular 11 SSR 已编译,但 prod 构建和服务出现问题,浏览器中未显示任何内容
- python - 无法使用标准代码从 Python API 访问和下载 Sentinel-2 图像