啊这啧啧啧 发表于 2023-3-13 19:02:47

友友可以帮忙看一下求阶乘和吗

#include<stdio.h>
   //编写程序算出1!+2!+3!+…+10!的和 (3! 表示 1*2*3)
   
int main(){
        int mult=1;//阶乘的结果;
        int sum=0;//总式和;
        int i;//数的阶乘
        int j;//几个数
       
        for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
                for(j=1;j<=i;j++){
                        mult*=j;//i阶乘,如3!
                        sum+=mult;
                       
                }
        }
       
        printf("阶乘和为%d",sum);
        return 0;
}

isdkz 发表于 2023-3-13 19:02:48

这段代码存在一些问题。

首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶乘值。

否则,多次循环乘以旧的mult值,得到的结果将不是正确的阶乘值。

所以,应该将mult=1放在内层循环前面。

其次,在计算总和时,应该将每个阶乘值加到总和sum中,而不是将整个求阶乘过程的中间值加到总和中。

因此,应该将sum+=mult放在外层循环中。

下面是修改后的代码:

#include<stdio.h>

int main(){
    int mult;//阶乘的结果;
    int sum=0;//总式和;
    int i;//数的阶乘
    int j;//几个数
      
    for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
      mult=1;
      for(j=1;j<=i;j++){
            mult*=j;//i阶乘,如3!
      }
      sum+=mult;
    }
      
    printf("阶乘和为%d",sum);
    return 0;
}

啊这啧啧啧 发表于 2023-3-13 19:56:21

isdkz 发表于 2023-3-13 19:10
这段代码存在一些问题。

首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶 ...

#include<stdio.h>
   //编写程序算出1!+2!+3!+…+10!的和 (3! 表示 1*2*3)
   
int main(){
      int mult=1;//阶乘的结果;
      int sum=0;//总式和;
      int i=10;//数的阶乘
      int j;//几个数
      
                for(j=1;j<=i;j++){
                        mult*=j;//i阶乘
                        sum+=mult;//阶乘和
                }
      
      printf("阶乘和为%d",sum);
      return 0;
}
//谢谢宝子了,啊啊啊啊啊啊啊,今天写了好久,简直爱死你了{:5_108:},看了一下突然有个灵感,这个好像也可以,{:5_101:}
页: [1]
查看完整版本: 友友可以帮忙看一下求阶乘和吗