5.1.1 第三种循环----for循环

如图

结果闺女买了两袋包子,一袋十二个,一共24个包子.为啥?4!=24.n!表示阶乘,n!=1*2*3*...*n如果我们要写一个程序,计算一个数n的阶乘并打印结果,要怎么设计呢? 变量:我们需要输入一个整数n.然后需要一个fac来记录n累乘得结果,最后一个整数i,来让他在fac累乘之后每次加1,在i大于n时退出循环.用我们学过的while循环来做,代码如下:

#include<stdio.h>
int main()
{
    int fac=1;
    int n;
    scanf("%d",&n);

   int i=1;
    while(i<=n)
    {
        fac*=i;
        i++;
    }
    printf("%d的阶乘为%d",n,fac); 
}

我们看到在我们这个程序里,先是把i初始化,然后再进行判断,在循环的每一步我们让i++.如果我们写出了这样的循环,在c语言中,还有一种语句可以用来表示这种循环,那就是for.

for语句的结构

for(初始动作;循环条件;循环每轮要做的事情)

{

循环体

}

顺序:第一次执行 1 2 4 3  后面每次执行 2 4 3.

for循环就像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,不断重复循环,而每执行一次循环,计数器的值都会以一定步进做调整,比如加一或者减一.

用for换成while,代码如下:

#include<stdio.h>
int main()
{

    int fac=1;
    int n;
    scanf("%d",&n);

    int i=1
    for(i=1;i<=n;i++)
    {
        fac*=i;
    } 
    printf("%d的阶乘为%d",n,fac); 
}

变量i只参与了循环,那我们可以这样简化他.把

     int i=1
    for(i=1;i<=n;i++)

改成

for(int i=1;i<=n;i++)

我们还注意到,在第一次循环的时候,fac=1*1=1,可是fac本来的值就是1了,这样做不是无意义吗,那如果我们把i改为2呢.我们来看看当n=1时,特殊情况,刚刚好合适,因为一开始就不满足循环条件,直接跳过循环,最后刚好输出fac最开始的值1.

我们知道n!是从开始的,那我们可不可以反过来,从n开始呢?可以.改动如下:

    int fac=1;
    int n;
    scanf("%d",&n);
    for(int i=n;i>1;i--)
    {
        fac*=i;
    } 
    printf("%d的阶乘为%d",n,fac); 

既然i是等于n的,那我们可不可以直接用n来做循环?可以,n=n;但前面应该要有一个变量来存储n原始始的值,否则最后输出的结果会出错.同时,在for中,像是n=n;这样的初始条件可以省略.所以,最终可以表示为

    int fac=1;
    int n;
    scanf("%d",&n);

    int=n;
    for(;n>1;n--)
    {
        fac*=n;
    } 
    printf("%d的阶乘为%d",i,fac); 

对于for循环来说,它的三个表达式是都可以省略的,但需要加上其他操作.
小套路:做求和的程序时,初始值应设为0;做求积的程序时,初始值应设为1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值