制造更高级的机器-计数循环

制造更高级的机器-计数循环
这天,师傅要求你做一个while的机器将从1到100所有的数输出到屏幕上,每行一个数字。这当然难不住你,while机器很快就会出来。变量a作为一个计数器,一定要先给它一个值,这叫做初始化。
a=1;
while(a<=100){
printf(“%d\n”,a);
a++;
}
如果a从0开始呢?即a=0。
对了! printf(“%d\n”,a);和a++;两条语句交换一下,就可以。
你已经不满足于while机器程序,能不能给这个机器内部程序简化一下呢?将计数器放到开关条件里面,这就变成了一个新的机器for。在它的圆括号里面,将计数器初始化,判断,累计都放到一起了,如下面的程序。
for(int i=1;i<=100;i++){
printf(“%d\n”,i);
}
同样只有一条语句的时候,for也可以省略大括号。
for(int i=1;i<=100;i++)
printf(“%d\n”,i);
是不是感觉for机器更加高端一点。因为机器内部的循环体更加简练了。
计数循环for可以分为四部分在圆括号里包含三部分,大括号里面包含的语句是第四部分。
第一:int i=1;
第二:i<=100;
第三:i++
第四:printf(“%d\n”,i);
那么执行的顺序是什么?不是你想象中的一、二、三、四。而是一、二、四、三。
就是先将计数器i初始化为1,然后判断i是否小于等于100,再后执行输出i,最后才进行i++,加完后再返回前面的圆括号里去判断i是否小于等于100,满足条件就继续输出,不满足条件就退出。
下面我们来计算从1到100的和。只要把计数器i累加起来就可以。
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;//sum=sum+i;
}
printf("%d",sum);
累加需要建立一个存储和的变量sum,并且要初始化为0。
第1次计数器i=1,sum=0,sum+=i=0+1=1;
第1次计数器i=2,sum=1,sum+=i=1+2=3;
第1次计数器i=3,sum=3,sum+=i=3+3=6;
……
直到第100次,累加完毕,进行输出。
再计算从1到100所有偶数的和。
这时候大师兄和小师弟就会要在for循环里判断计数器是否为偶数,偶数的话,才相加。循环完毕,最后输出。
for(int i=1;i<=100;i++){
if(i%2==0) sum+=i;
}
printf("%d",sum);

懒惰的二师兄怎么能这么麻烦呢?已经分析出了偶数从2开始,每次加2,如2,4,6,8,10……,如果计数器i变成每次加2这样的话,就不用判断了,减少了重复的次数。
for(int i=2;i<=100;i+=2){
sum+=i;
}
printf("%d",sum);
看多简单!那么计算从1到100所有奇数的和,二师兄都懒得制作了。请大师兄和小师弟做完吧。
注意:
break是跳出循环;
continue强制进入下一次循环。
通过这两个while和for程序机器,你是不是发现了它们能够相互转化。那么问题来了,要怎么选择用这两个程序呢?
当需要大量重复的运算或者操作而又不能确定重复次数的时候,使用for循环结构显然不太适合,要选择while机器。而确定的循环次数的时候,可以选用for机器了执行。
在使用while循环的时候,要注意:
1、循环条件语句中出现的变量:先说明再使用,先初始化(赋初值)再用于条件表达式中;否则容易出现异常(循环不能执行或者超出预期),请上机时验证;
2、循环体中至少有一个语句能够改变循环条件中的某一个变量,否则容易出现死循环,否则师傅又该高兴了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值