//计算1到n的阶乘的和!
#include<stdio.h>
int main()
{
int i,n;
int temp = 1;
int sum = 0;
printf("Please input a num n:\n");
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
temp *= i;
sum += temp; // 开始写的时候是这样的 sum+ = temp,这是错误的!! +和=必须在一起!
}
printf("阶乘之和是:sum = %d\n",sum);
return 0;
}
思路:题目中要求的是1 到 n 的阶乘,既然1 到 n是连续的,我就想到了 for( ; ;),n的阶乘等于(n-1)!乘 n ,(n-1)的阶乘等于 (n-1)! 乘 (n-1),以此类推.............
2的阶乘等于 1的阶乘乘以2 ,所以我们可以把 1 的阶乘放进 temp里面,当遍历到需要计算2的阶乘的时候就temp拿出来用 temp = temp * 2;这时候temp里面的值变成了2的阶乘,一次往后推,temp里面会放进去3的阶乘、4 的阶乘 ..................................n的阶乘,*****但是注意一点,temp的值是不断变化的,所以我们需要在他变化之前,把temp的值保留在 sum 里边,也是就 sum += temp;
========================================================分割线=================================================================
今天还看到一个 continue的用法,在博客记下来。
#include<stdio.h>
int main()
{
int i;
for(i = 0;i < 100;i++)
{
if(i % 3 == 0)
continue; //如果能被三整除,直接跳过这个i,继续执行下一个;和break的区别就在于他是跳过,然后会继续执行这个for()循环,而break会跳出循环
printf("%d",i);
}
return 0;
}