繁体   English   中英

在循环中多次计算阶乘仅在第一次通过

[英]Calculating factorial multiple times in a loop only works the first time through

这个程序计算n! 仅在第一次通过循环时给出正确的值。 在随后的每次循环中,它都会给出不正确的值。

我究竟做错了什么?

#include <stdio.h>

int main()
{
    int n,result=1;
    while(1){
        do{
            printf("\nInput n:");
            scanf("%d",&n);
        }while(n<1);
        for (int i=1;i<=n;i++)
        {
            result*=i;
        }
        for(int j=1;j<=n;j++)
        {
            printf("%d",j);
            if(j!=n)
            {
                printf("x");
            }
        }
        printf("=%d",result);
    }   
}

每次通过外循环都没有得到相同的result值的原因是因为在启动循环时没有重置它的值。

第一次循环result从值 1 开始。下一次,它从完成循环的最后一次迭代时的值开始,因为您没有费心去改变它。

您想在循环开始时将result设置为 1。

while(1){
    result = 1;
    do{
        ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM