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日

悬赏问题

  • ¥15 easypoi导出复杂excel
  • ¥20 C++初高中竞赛题,devc++可以通过的
  • ¥60 二次元手游日常任务自动化代肝(相关搜索:自动化)
  • ¥15 mysql将查询的结果作为动态列名怎么实现
  • ¥50 python自动地图截图脚本
  • ¥15 悬赏一本书(内含Matlab代码)的书名、作者
  • ¥20 瑞萨RA4M1芯片刷写为arduino r4 minima
  • ¥15 fastreport怎么判断当前页数
  • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
  • ¥15 能不能通过蓝牙将传感器数据传送到手机上