这是我的程序,有一个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循环不会增加。我哪里弄错了?
答案 0 :(得分:3)
您将所有内容乘以0
。第一个循环后,prod
为0
。然后使用它乘以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*i
,prod
也变为0
。因此,每次获得0
;
使用i=1
启动循环。
注意 int main()
- &gt; int main(void)