在循环-C中迭代时不更新浮点变量
我有这个while循环在循环-C中迭代时不更新浮点变量,c,arrays,iteration,C,Arrays,Iteration,我有这个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++; }
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++;
}
while(p
在第一个循环中,它成功地汇总了总数并将其放入totalg
但是在第二次迭代之后,totalg
它只是打印出我从第一次迭代得到的结果。
有人能指出我可能做错了什么吗?提前谢谢。您没有重置
s
。当第二次迭代开始时,s==numComponents
(因为上一次迭代一直在增加它),因此第二次while
循环永远不会运行,而totalg
也永远不会更改
你应该:
s
(或者更好,按照@JonathanLeffler的建议执行,并使用for
循环)totalg
(取决于您想要什么;如果没有更多的上下文,我无法说出)你能发布完整的代码吗?也许结果和达到10公里的成绩一样@乔纳坦利弗勒:谢谢!在9999点坐在那里很有趣。玉米秸秆,如果你真的想要的话,我们可以在那里投票否决你。不,只是开玩笑,这里有另一个+1:-)而且,更严肃的一点是,如果代码使用两个嵌套的
for
循环,这两个循环都是用惯用的编写的(p=0;p
,那么一开始就不会有问题。(我更愿意在循环中声明变量:for(int p=0;…)
但您需要C99或更好的支持。)