【问题标题】:duplicate loops in CC中的重复循环
【发布时间】: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 是你的朋友。
  • 请将您的输出(预期和实际)包含为文本而不是图像。

标签: c loops


【解决方案1】:

目前你正在做的事情:

printf("[%d,%d],", num[value][value1], num[value2][value3]);

我建议你这样做:

printf("value=[%d], value1=[%d], value2=[%d], value3=[%d], [%d,%d],", 
value, value1, value2, value3,
num[value][value1], num[value2][value3]);

因此,不仅要打印矩阵值,还要打印索引。你会看到发生了什么。

【讨论】:

  • 我知道这很有帮助!干杯。
  • 我已经看到问题出在索引中,但我没有进行整个分析,而是想让您有机会自己找出答案。我很高兴你喜欢它:-)
猜你喜欢
  • 2018-04-21
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2015-09-14
  • 2016-10-17
相关资源
最近更新 更多