【问题标题】:For loop condition not met, not sure whyFor 循环条件不满足,不知道为什么
【发布时间】:2019-06-13 01:13:34
【问题描述】:

使用以下代码:

void pivot(int n, int m, int evi, int lvi, float a[m][n]) {
  int i,j;
  float s = a[lvi][evi];
  for (i = 0; i < n; i++) a[lvi][i] /= s;
  for (j = 0; (j < m) && (j != lvi); j++) {
    s = a[j][evi];
    for (i = 0; i < n; i++) {
      a[j][i] -= s * a[lvi][i];
      printf("tab[%d][%d] = %f\n", j, i, a[j][i]);
    }
  }
}
float tab[3][6] = {{0.0}};
tab[0][0] = 200;
tab[0][1] =-200;
tab[0][2] = 60;
tab[0][3] =-60;
tab[0][4] = 1;
tab[1][0] =-100;
tab[1][1] = 100;
tab[1][2] =-150;
tab[1][3] = 150;
tab[1][5] = 1;

当我打电话时

pivot(6,3,0,0,tab)

pivot 函数中的第二个 for 循环(带有 && 运算符)永远不会进入,为什么?

【问题讨论】:

  • (j
  • 为什么循环条件中有j != lvi?那应该完成什么?
  • 当然但是for循环永远被输入
  • @ThomasKirven 只有在条件为真时才会进入循环。
  • 你认为第一次迭代之前没有检查条件吗?

标签: c for-loop conditional


【解决方案1】:

只要条件变为 false,for 循环就会停止。如果循环开始时为 false,则根本不会进入循环。

如果你想跳过某些行,你应该把检查放在循环体中。

  for (j = 0; j < m; j++) {
    if (j == lvi) {
      continue;
    }
    s = a[j][evi];
    for (i = 0; i < n; i++) {
      a[j][i] -= s * a[lvi][i];
      printf("tab[%d][%d] = %f\n", j, i, a[j][i]);
    }
  }

【讨论】:

  • 谢谢!实际上我最初有类似的东西,但它有单独的奇怪错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2021-08-22
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多