PTA 7-183 用for循环求 s=1!+ 2!+ 3!+ …+n!的值

PTA 7-183 用for循环求 s=1!+ 2!+ 3!+ …+n!的值

分数 5
作者 王秀秀
单位 山东交通学院

任务描述
本关任务:编写程序用for循环求 s=1!+ 2!+ 3!+ …+n!的值。

相关知识
for语句的一般形式为:

  for(表达式1;表达式2;表达式3) 
       语句

for语句的执行过程如下:

for 语句先求解表达式1。
求解表达式2,若其值为真(非0),则执行 for 语句中指定的内嵌语句,然后执行下面第3步;若其值为假(0),则结束循环,转到第5步。
求解表达式3。
转回上面第2步继续执行。
循环结束,执行 for 语句下面的一个语句。
其执行过程可用下图表示。
在这里插入图片描述

可以把 for 语句最简单的应用形式也是最容易理解的形式如下:

for (循环变量赋初值; 循环条件; 循环变量增量)
      语句

循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;

循环条件是一个关系表达式,它决定什么时候退出循环;

循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;隔开。例如:

int sum=0,i;
for(i=1; i<=100; i++)
   sum=sum+i;

请将 for 语句与 while 语句对比:

int sum=0,i;
i=1;
while(i<=100)
{
    sum=sum+i;
    i++;
}

注意:

1)内嵌语句可以是单条语句,也可以是复合语句。

2)3个表达式都可以省略,但;不能缺省。省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值;省略了“表达式2(循环条件)”,则表示循环条件永为真,不做其它处理时便成为死循环。例如:

for(i=1; ;i++)
{ 
    sum=sum+i;
}
相当于:

i=1;
while(1)
{
    sum=sum+i;
    i++;
}

编程要求
根据提示,在右侧编辑器补充代码,用for语句求 s=1!+ 2!+ 3!+ …+n!的值。

测试说明
平台会对你编写的代码进行测试:

测试输入:

5
预期输出:

1!=1
2!=2
3!=6
4!=24
5!=120
1!+2!+…+5!=153

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>
int main(){
    int n, sum = 0;
    int factorial = 1;
    scanf("%d", &n);
    if(n == 0){    //0的阶乘为1
        printf("0!=1");
        return 0;
    }
    for(int i = 1; i <= n; i++){    //求n的阶乘
        factorial *= i;
        sum += factorial;    //和
        printf("%d!=%d\n", i, factorial);
    }
    printf("1!+2!+…+%d!=%d", n, sum);
    return 0;
}

解题思路:
step1:0为特殊,阶乘为1,程序结束
step2:依次乘并记录每次的和,最后输出总和

归属知识点:
输出格式
条件判断
循环结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值