C 在循环中多次计算阶乘只在第一次到第二次时有效

C 在循环中多次计算阶乘只在第一次到第二次时有效,c,C,这个程序计算n仅在第一次通过循环时提供正确的值。在循环的每个后续时间,它都会给出一个不正确的值 我做错了什么 #include <stdio.h> int main() { int n,result=1; while(1){ do{ printf("\nInput n:"); scanf("%d",&n); }while(n<1);

这个程序计算
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);
    }   
}
#包括
int main()
{
int n,结果=1;
而(1){
做{
printf(“\n输入n:”);
scanf(“%d”和“&n”);

}而(n每次通过外循环时,
result
得不到相同值的原因是启动循环时没有重置其值

while(1){
    result = 1;
    do{
        ...
第一次通过循环
result
以值1开始。下一次通过时,它以完成最后一次循环迭代时的值开始,因为您不必更改它

您希望在循环开始时将
result
设置为1

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

“你能解释一下它出错的原因吗?”CatDragon很高兴我能帮忙。如果你觉得有用的话,请随意解释。