题目:求阶乘和:输入n,求1!+2!+。。。+n!其中n!=1*2*...*n
大佬一定觉得很菜的一道题,但我没一次AC,所以来写写错误点来提示自己(哈哈哈)。
一,普遍通用做法:for循环两次嵌套
int main()
{
int n, p, sum = 0, i, j;
scanf("%d",&n);
for(i = 1; i <= n;i++){
p=1;
for(j =1;j <= i; j++){
p=p * j;
}
sum = sum + p;
}
printf("%d",sum)
return 0;
}
这个用了累加器和累乘器的原理,详情如下:
累加器:
int i;
int sum=0;
for(i=1;i<=100,i++)
{
sum=sum+i;
}
printf("%d",sum);
累乘器:
int i;
int p=1;
for(i=2;i<=100;i++)
{
p=p*i;
}
printf("%d",p);
这样就完美AC了
二,这道题可以很巧妙的用一次循环即可(但不是所有循环嵌套都可以精简成一次循环,但如果可以,最好选最优)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ans=0,cnt=1;//一定要初始化,如果输入的数值没有它,也就是它是我自己定义的,就一定要初始化
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cnt*=i;
ans+=cnt;
}
printf("%d",ans);
return 0;
}

浙公网安备 33010602011771号