鱼C论坛

 找回密码
 立即注册
查看: 1924|回复: 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放在外层循环中。

下面是修改后的代码:
#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;
}

最佳答案

查看完整内容

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

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> 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-10-7 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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