鱼C论坛

 找回密码
 立即注册
查看: 1594|回复: 2

[已解决]友友可以帮忙看一下求阶乘和吗

[复制链接]
发表于 2023-3-13 19:02:47 | 显示全部楼层 |阅读模式
10鱼币
#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;
}
最佳答案
2023-3-13 19:02:48
这段代码存在一些问题。

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

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

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

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

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

下面是修改后的代码:

  1. #include<stdio.h>

  2. int main(){
  3.     int mult;//阶乘的结果;
  4.     int sum=0;//总式和;
  5.     int i;//数的阶乘
  6.     int j;//几个数
  7.       
  8.     for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
  9.         mult=1;
  10.         for(j=1;j<=i;j++){
  11.             mult*=j;//i阶乘,如3!
  12.         }
  13.         sum+=mult;
  14.     }
  15.       
  16.     printf("阶乘和为%d",sum);
  17.     return 0;
  18. }
复制代码

最佳答案

查看完整内容

这段代码存在一些问题。 首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶乘值。 否则,多次循环乘以旧的mult值,得到的结果将不是正确的阶乘值。 所以,应该将mult=1放在内层循环前面。 其次,在计算总和时,应该将每个阶乘值加到总和sum中,而不是将整个求阶乘过程的中间值加到总和中。 因此,应该将sum+=mult放在外层循环中。 下面是修改后的代码:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-13 19:02:48 | 显示全部楼层    本楼为最佳答案   
这段代码存在一些问题。

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

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

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

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

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

下面是修改后的代码:

  1. #include<stdio.h>

  2. int main(){
  3.     int mult;//阶乘的结果;
  4.     int sum=0;//总式和;
  5.     int i;//数的阶乘
  6.     int j;//几个数
  7.       
  8.     for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
  9.         mult=1;
  10.         for(j=1;j<=i;j++){
  11.             mult*=j;//i阶乘,如3!
  12.         }
  13.         sum+=mult;
  14.     }
  15.       
  16.     printf("阶乘和为%d",sum);
  17.     return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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;
}
//谢谢宝子了,啊啊啊啊啊啊啊,今天写了好久,简直爱死你了,看了一下突然有个灵感,这个好像也可以,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 12:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表