Viper3 0.O 2023-11-11 01:48 采纳率: 50%
浏览 6
已结题

关于阶乘求和输出不对的提问(语言-c语言)

我输入5答案应该是153 为什么这里是78
题目是求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。


#include <stdio.h> 

int fx(int n) { 
    int i,jiecheng; 
    jiecheng=1; 
    for(i=0;i<n;i++) { 
        jiecheng=jiecheng*n--; 
    } 
    return (jiecheng); 
} 

int main() { 
    int fx(); 
    int l; 
    scanf("%d",&l); 
    int sn=0; 
    for(int i=1;i<=l;i++) { 
        sn=sn+fx(l--); 
    } 
    printf("%d",sn); 
    return 0; 
}


  • 写回答

2条回答 默认 最新

  • 柯本 2023-11-11 09:46
    关注

    不要在循环中改变循环条件的值

    
     
    #include <stdio.h> 
     
    int fx(int n) { 
        int i,jiecheng; 
        jiecheng=1; 
        for(i=1;i<=n;i++) { //要到1~n的
            //jiecheng=jiecheng*n--; //你改变了循环最终变量n, 循环会提前结束的
            jiecheng=jiecheng*i; //这么不是更简单
        } 
        return (jiecheng); 
    } 
     
    int main() { 
       // int fx(); 这个可以没有,要有也要int f(int n) 
        int l; 
        scanf("%d",&l); 
        int sn=0; 
        for(int i=1;i<=l;i++) { 
           // sn=sn+fx(l--); //同理
           sn=sn+fx(i);
        } 
        printf("%d",sn); 
        return 0; 
    }
     
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月11日