我的代码哪里有问题? 输3得15,不是9,

img

img

内部每次循环结束后将小s置为1,不然上一次的运算结果会累积到下一次上
S+=s;后添加一行s=1;即可
有帮助望采纳~

在每次进第二重循环时,s=1;

如果没将s置1的话,s一直累成,会变得越来越大

img




#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n,s=1,S=0;
    cin>>n;
    for(int i=1; i<=n;i++)
    {
        s=1;
        for(int j = 1; j<=i; j++)
        {
            s = s*j;
        }
        S +=s;
    }
    cout<<S;
    return 0;
}

img

第一个for循环开始时,加s=1;