对于此道编程题,一般的做法是写两个循环,大循环是1到10的阶乘之和,小循环是各个阶乘的计算,代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int j = 0;
int mul = 1;
int sum = 0;
for (i = 1; i <= 10; i++) //和循环
{
mul = 1; //每次循环前都需要初始化为1,要不然最后结果会变大
for (j = 1; j <= i; j++) //阶乘循环
{
mul = mul*j;
}
sum = sum + mul;
}
printf("%d ", sum);
system("pause");
return 0;
}
{
int i = 0;
int j = 0;
int mul = 1;
int sum = 0;
for (i = 1; i <= 10; i++) //和循环
{
mul = 1; //每次循环前都需要初始化为1,要不然最后结果会变大
for (j = 1; j <= i; j++) //阶乘循环
{
mul = mul*j;
}
sum = sum + mul;
}
printf("%d ", sum);
system("pause");
return 0;
}
下面是对一般方法的一点点优化,只需写一个循环,先计算阶乘,然后将此次循环阶乘的值与sum和的值相加赋给sum,然后循环到10,也就将1-10各个阶乘之和计算出来了。代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int mul = 1;
int sum = 0;
for (i = 1; i <= 3; i++)
{
mul = mul*i; //计算阶乘
sum = sum + mul; //计算阶乘之和
}
printf("%d ", sum);
system("pause");
return 0;
}
{
int i = 0;
int mul = 1;
int sum = 0;
for (i = 1; i <= 3; i++)
{
mul = mul*i; //计算阶乘
sum = sum + mul; //计算阶乘之和
}
printf("%d ", sum);
system("pause");
return 0;
}