Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在循环-C中迭代时不更新浮点变量_C_Arrays_Iteration - Fatal编程技术网

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

在循环-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循环

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或更好的支持。)