C语言学习笔记(浙大翁恺版)第五周(1)

5.1.1 for循环

某天,翁恺老师叫闺女帮他带几个包子回家...

于是闺女带了24(4!)个包子回家(闺女是计算机吗hhhh)

那么如何让计算机计算阶乘呢?如果我想做个计算阶乘的程序,该怎么写?我的需求是:我输入一个数,然后程序计算给出我这个数的阶乘结果。那么我们分析一下,这个程序需要什么数据,又会产生什么数据。

那么显然我们要定义一个接受n的变量且为整型, 要一个存储结果的变量,还需要一个从1递增到n的变量。于是可以得出以下代码:

int n;
scanf("%d",&n);
int fact=1;
//fact为结果
int i=1;
while(i<=n)
{
    fact*=i;
    i++;
}
printf("%d!=%d",n,fact);

如果我们用for语句写这行代码:

int n;
scanf("%d",&n);
int fact=1;
//fact为结果

for(int i=1;i<=n;i++)
{
    fact*=i;
}
printf("%d!=%d",n,fact);

其中for括号中三个语句,第一句是循环的初始动作(初始化),第二句是循环继续的条件,第三句是循环每次要做的事情。

比如在这个程序中,首先将i初始化为1,当i<=n时候执行fact自乘的那个语句以及i++。不满足时退出。

for循环:更像一个计数循环,设定一个计数器,初始化,然后在一个条件下重复执行循环体,每次执行循环都以一定的步进来调整一个值,直到将这个值调整为不满足条件,且实现目标,并退出循环。一举多得,简直是天才设计!

那么我们如何读懂一个for循环语句,此处给一个小例:

for(count=10;count>0;count--)

可以解读为:对于一个初始值为10的count变量,当count>0的时候进入循环体,循环体执行一次之后count自减1。

优化代码:上述代码中有一个小问题,i初始值为1,无论n输入几,循环体第一步都是1*1,这就有些多余,所以我们将i初始值改为2,那么此时当n输入大于2的值的时候,第一步为1*2,没问题,当n输入1的时候,i=2,此时n<i,不满足条件不进入循环,也没问题。至此我们就将这个程序完美地写出来了。

那再尝试思考下这些问题吧!

 如果用n乘到1,代码为:

int n;
scanf("%d",&n);
int fact=1;
for(;n>1;n--)
//n初始值即为n,可以写为n=n,也可以直接不写,但是分号不能省略
{
    fact*=n;
}
printf("%d!=%d",i,fact);

5.1.2 循环的计算和选择

循环次数的判断:

 

若写为:i=1;i<=n,循环次数仍然是n,但i初始值为1,循环结束后的值为n+1. 

for循环和while循环的互换(二者等价):

 

for循环语句的省略:

 

那么我们现在已经学习了三种循环,下大致给出使用场景:

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值