在for循环语句中我在哪里做错了?

时间:2015-09-22 14:12:15

标签: c for-loop

这是我的程序,有一个for循环:

int main() 
{
   int prod, i, num;

   printf("\nHOW MANY NUMBERS WOULD YOU LIKE ME TO MULTIPLY\n");
   scanf("%d", &num);

   prod = 1;

   for (i = 0;  i <= num;  i++)
   {
       prod = prod * i;
   }

   printf("\nTHE FACTORIAL OF THE GIVEN %d NUMBERS IS %d \n", num, prod);

   system("pause");
   return 0;
}

当我执行程序时,它给我0作为输出,即使我输入num值为5或任何其他数字,for循环不会增加。我哪里弄错了?

3 个答案:

答案 0 :(得分:3)

您将所有内容乘以0。第一个循环后,prod0。然后使用它乘以i的下一个值。任何数字的零次为零。

你可以通过在[1,num]范围内迭代来解决这个问题:

for (i = 1;  i <= num;  i++)
{
    prod *= i; /* same effect as prod = prod * i */
}

答案 1 :(得分:0)

你的错误是循环

for (i = 0;  i <= num;  i++)

当您乘以i时,这将始终为产品提供0。

你应该

for (i = 1;  i <= num;  i++)

答案 2 :(得分:0)

for (i = 0;  i <= num;  i++)
{
   prod = prod * i;
}

在第一次迭代i=0的此循环中,由于prod=prod*iprod也变为0。因此,每次获得0;

使用i=1启动循环。

注意 int main() - &gt; int main(void)