我有这个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
(取决于您想要的内容;没有更多上下文,我无法告诉您)
了解如何使用调试器逐行浏览代码