迭代循环时浮点变量不更新 - C

时间:2014-10-24 00:26:25

标签: c arrays iteration

我有这个循环

while (p < numSchemes){
    totalg = 0;
    while (s < numComponents){
        totalg = totalg + (grades[s] * (weight[p][s] * .01) );
        s++;
    }

    printf("Grade using marking scheme #%d: %.02f\n", p, totalg);
    p++;
}

在第一个循环中,它成功总结了总数并将其放入totalg 但是在第二次迭代之后,totalg它只打印出我从第一次迭代得到的结果。 有人能指出我在这里做错了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您没有重置s。当第二次迭代开始时,s == numComponents(因为前一次迭代一直在增加它),所以第二个while循环永远不会运行,totalg永远不会改变。

你应该:

  1. 每次迭代重置s(甚至更好,像@JonathanLeffler建议并使用for循环一样)
  2. 可能重置totalg(取决于你想要的东西;如果没有更多背景,我就无法告诉你)
  3. 了解如何使用调试器逐行执行代码