2401_86531504 2024-10-28 14:51 采纳率: 84.6%
浏览 6

这个难道不应该用两层循环吗 应该怎么改 改出具体代码并找出我的错误

这个难道不应该用两层循环吗 应该怎么改 改出具体代码并找出我的错误

img

  • 写回答

2条回答 默认 最新

  • a5156520 2024-10-28 15:14
    关注

    第二个for循环计算阶乘那里,使用另外一个变量来存储阶乘的值即可。

    修改如下:

    #include <stdio.h>
    
    int main(void){
        
        int n;
        scanf("%d",&n);
        int ans=0;
        int j,fact;
        
        for(int i=1;i<=n;i++){
            
            // 因为j是循环变量,用于遍历1到n之间的每个整数,用它来存储阶乘的值会产生错误 
            //  所以这里使用另外一个变量来存储当前整数的阶乘 
            for(j=1,fact=1;j<=i;j++){
                fact=fact*j; 
            }
            ans=ans+fact;  // 累加阶乘fact的值到和ans中 
        }
        
        printf("%d",ans);
        
        return 0;
        
    } 
    
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月28日