一、计算n的阶乘。
1.定义整形变量n,使用scanf函数输入所要求的数;
int main()
{
int n = 0;
scanf("%d", &n);
2.定义循环变量i;
int i = 0;
int ret = 1;
3.定义整形ret变量,并使用for循环和 ret *=i,每循环一次,i++,再与ret相乘;
for (i = 1;i <=n ;i++)
{
ret = ret *i;
}
printf("%d\n", ret);
4.最后算出n的阶乘,输出结果;
5.完整代码;
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int ret = 1;
for (i = 1;i <=n ;i++)
{
ret = ret *i;
}
printf("%d\n", ret);
return 0;
}
二、输入多个数,计算他们的阶乘。
1.在题目一的基础上,在for循环的外部加入while,以scanf的返回值为循环的判断条件,读到值就可以循环;
while (scanf("%d", &n) != 0)
{
ret = 1;
for (i = 1;i <= n;i++)
{
ret = ret * i;
}
printf("%d\n", ret);
}
2.注意阶乘变量的初始化,算完一个数的阶乘,要将他初始为1,否则里面的值还是上次循环的值;
ret = 1;
3.输出结果;
4.完整代码:
int main()
{
int n = 0;
int i = 0;
int ret = 1;
while (scanf("%d", &n) != 0)
{
ret = 1;
for (i = 1;i <= n;i++)
{
ret = ret * i;
}
printf("%d\n", ret);
}
return 0;
}
三、计算1-n的阶乘之和。
法一:利用多次循环;
1.定义循环和计算阶乘所需要的变量;
int x = 0;
int i = 0;
int ret = 1;
int m = 0;
int n = 0;
2.最里面的一层是计算阶乘;
for (i = 1;i <= x;i++)
{
ret = ret * i;//ret*=i //每次用ret都要从1开始
}
3.第二层,通过输入的n,开始for循环,循环变量x由1到n,从而计算出1到n的阶乘,并用m+=ret求出和,不要忘记将ret初始化;
for (x = 1;x <= n;x++)//171-180行是求一次的代码
{
ret = 1;//每次要将ret重置
for (i = 1;i <= x;i++)
{
ret = ret * i;//ret*=i //每次用ret都要从1开始
}
m = m + ret;//m+=ret//每次用m都要从0开始
}
4.最外层以while和scanf函数返回值构成整体循环,实现多组输入,注意每次要将和的初始变量初始化;
while (scanf("%d", &n) != 0)
{
m = 0;//多重循环要注意变量充值
for (x = 1;x <= n;x++)//171-180行是求一次的代码
{
ret = 1;//每次要将ret重置
for (i = 1;i <= x;i++)
{
ret = ret * i;//ret*=i //每次用ret都要从1开始
}
m = m + ret;//m+=ret//每次用m都要从0开始
}
printf("%d\n", ret);
}
5.输出结果;
6.整体代码;
int main()
{
int x = 0;
int i = 0;
int ret = 1;
int m = 0;
int n = 0;
while (scanf("%d", &n) != 0)
{
m = 0;//多重循环要注意变量充值
for (x = 1;x <= n;x++)//171-180行是求一次的代码
{
ret = 1;//每次要将ret重置
for (i = 1;i <= x;i++)
{
ret = ret * i;//ret*=i //每次用ret都要从1开始
}
m = m + ret;//m+=ret//每次用m都要从0开始
}
printf("%d\n", ret);
}
return 0;
}
法二:利用一次循环;
1.将第二次循环的内容简化,ret*=x,循环变量每次加1,紧接着与ret相乘,就实现了阶乘;
for (x = 1;x <= n;x++)//171-180行是求一次的代码
{
ret = ret * x;
m = m + ret;
}
2.m+=ret;每次算完ret,紧接着相加,求出阶乘之和,循环一次,算出1的阶乘,循环两次,算出2的阶乘,并算出1和2的阶乘之和,循环n次,算出n的阶乘,并算出1-n的阶乘之和;
3.多组输入时注意变量的初始化;
ret = 1;
m = 0;
4.输出结果;
5.完整代码;
int main()
{
int x = 0;
int i = 0;
int ret = 1;
int m = 0;
int n = 0;
//while (scanf("%d", &n) != 0)
//{
// m = 0;//多重循环要注意变量充值
while (scanf("%d", &n))
{
ret = 1;
m = 0;
for (x = 1;x <= n;x++)//171-180行是求一次的代码
{
ret = ret * x;
m = m + ret;
}
printf("%d %d\n", ret, m);
/*}*/
}
return 0;
}