【发布时间】:2021-10-29 05:42:02
【问题描述】:
为什么会出现重复值?它应该看起来像this,但结果却是this。我想找到一对和输入数字相加的二维数组。
这是我的代码
#include <stdlib.h>
#include <stdio.h>
void main() {
int num[3][4] = {5, -1, 17, 8, 4, 18, -3, 15, 26, 6, -6, 10};
int checker, val;
printf("Enter integer to check: ");
scanf("%d", &checker);
printf("The pair of integers that add to %d are\n", checker);
for (size_t value = 0; value < 12; value++) {
for (size_t value1 = 0; value1 < 12; value1++) {
for (size_t value2 = 0; value2 < 12; value2++) {
for (size_t value3 = value2 + 1; value3 < 12; value3++) {
val = num[value][value1] + num[value2][value3];
if (val == checker) {
printf("[%d,%d],", num[value][value1], num[value2][value3]);
}
}
}
}
}
}
【问题讨论】:
-
您超出了数组的范围,导致未定义的行为。
-
您能否指定我在数组中超出范围的位置?我确实在循环中指定了 12 个数组的数量。@Someprogrammerdude
-
您有一个包含三个元素的数组
num。您在该数组上迭代超过 12 个元素。实际上,您将使用最多num[11][11]的元素。 -
Valgrind 和 address sanitizer 是你的朋友。
-
请将您的输出(预期和实际)包含为文本而不是图像。