0

我创建了以下程序来查找阶乘因子,但我无法理解为什么在i几次迭代后 的值变为负数。

#include <stdio.h>

int main()
{
    int a,b,i;

    printf("enter the number: ");
    scanf("%d", &a);

    printf("entered value is %d\n", a);

    for(i = 1; i < a; i++)
    {
        printf("iterating for a = %d\n", a);
        b = a % i;
        if(b == 0)
        {
            printf("%d\n", i);
        }
        else
        {
            printf("a = %d, i = %d, modulo = %d\n", b);
        }
    }
    return (0);
}
4

3 回答 3

2

i你最后没有打印printf。将其更改为:

printf("a = %d, i = %d, modulo = %d\n", a, i, b);
于 2013-09-07T14:42:00.447 回答
2

使固定:

printf("a = %d, i = %d, modulo = %d\n", b);

printf("a = %d, i = %d, modulo = %d\n", a, i, b);

此外,您的程序找不到阶乘

b =1;
for(i = 1; i <= a; i++)    
    b*=i;
printf(" Factorial for a = %d \n", b);
于 2013-09-07T14:42:23.253 回答
1

不,我不会变成 0。我尝试使用此代码进行 6 次和 10 次迭代。它没有给出 i 的负值。在我的情况下,它的 i=1298 的给定值可能是垃圾值。也许你正在尝试更多的迭代次数,这就是为什么在一些迭代后 i 的负值。

于 2013-09-07T15:25:50.277 回答