Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中do while循环中的计数器_C_Loops_Counter_Do While - Fatal编程技术网

C中do while循环中的计数器

C中do while循环中的计数器,c,loops,counter,do-while,C,Loops,Counter,Do While,我试图记录do while循环中的操作重复了多少次,但计数器每次只显示1。谁能告诉我我的错误在哪里?我在这里提供了代码 #include <stdio.h> #include <math.h> int main(void) { double i = 84; int counter = 0; do { counter++; i = fmod(i, 25.0); } while(i >

我试图记录do while循环中的操作重复了多少次,但计数器每次只显示1。谁能告诉我我的错误在哪里?我在这里提供了代码

#include <stdio.h>
#include <math.h>

int main(void)
{
    double i = 84;
    int counter = 0;
    do {
        counter++;
        i = fmod(i, 25.0);

        }
    while(i > 25);
    printf("Counter: %i\n %lf\n", counter, i);
}
#包括
#包括
内部主(空)
{
双i=84;
int计数器=0;
做{
计数器++;
i=fmod(i,25.0);
}
而(i>25);
printf(“计数器:%i\n%lf\n”,计数器,i);
}

fmod
是浮点模

它不能返回高于
25.0
的值,因为您已将
25.0
作为模值传递

这就是为什么
while(i>25)
在第一次迭代时为false

i = fmod(i, 25.0);
这将获取当前值
i
,并找到其除以25的剩余部分。随后,剩余部分被重新分配到
i

double i = 84;

这将
i
的初始值设置为84。如果我们做
84%25
,我们得到
9.0
。由于
9.0<25.0
,循环将在第一次操作后终止。因此,
计数器在循环中只增加一次。

您还期望什么<在第一次迭代中,代码> fMOD< /C>将使 I/COD>小于<代码> 84代码/Cube。请不要标记C++和C,它们是不同的语言。接下来,使用调试器,逐行运行代码,并观察变量如何变化。这会让你对那里发生的事情有准确的了解。