我有这个while循环

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只是打印出我从第一次迭代中得到的结果。
有人可以指出我在这里做错了什么吗?先感谢您。

最佳答案

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

你应该:


每次迭代都重置s(甚至更好,按照@JonathanLeffler的建议进行操作并使用for循环)
可能会重置totalg(取决于您想要的内容;没有更多上下文,我无法告诉您)
了解如何使用调试器逐行浏览代码

09-25 20:23