C语言系列(08)——循环结构(01)
本节主要讲解 while 和 do...while循环
一、什么是循环
相同事情:钟表的转动、轮胎的转动。
相似事情:每天吃饭,菜不同、日复一日、年复一年。
重复的做相同或者相似的事情。
二、为什么需要循环
减少重复代码,代码更简洁规范。
请看以下代码对比:
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
printf("I love you");
int i = 0;
while (i < 10)
{
printf("I love you\n");
i++;
}
以上两段代码,都是打印10句 I love you ,从代码的简洁和易读上来看,第二段代码明显优于第一段,试想如果是打印100句,1000句呢,是不是有更明显的方便之处。
三、while循环
语法:
while(循环条件)
{
//循环体
}
- 先判断循环条件,如果为true则执行循环体(并重复判断、执行步骤),如果为false则不执行循环体。
流程图:
**例:**小明被罚跑步:
代码示例:
int main()
{
int i = 0;//循环变量(记圈板)
while (i < 10)//1、判断是否已经10圈
{
printf("跑圈\n");//2、跑
i++;//3、跑完一圈,记圈板+1
}
}
提炼出循环三要素:循环变量初始化(init)
、循环条件(condition)
、循环变量在循环体内的改变(increment)
。
**例:**输出1~100之间的整数
int i = 1; // 循环变量初始化,从1开始打印
while (i <= 100) // 循环条件,到100结束
{
printf("%d ", i);
i++; // 循环变量在循环体内的改变
}
**例:**求1+2+3+4+….+100的值
int i = 1; // 循环变量
int sum = 0;//记录总和
while (i <= 100) // 循环条件
{
sum = sum + i; //第一次循环是sum = 0+1;sum的值就变成了1
//第二次循环sum = 1+2;sum的值就变成了3
//第三次循环sum = 3+3;sum的值就变成了6
//.....以此类推循环
i++; // 循环变量在循体内的改变
}
printf("sum:%d\n", sum);
输出结果为:sum:5050
以上示例,sun值的累加,就犹如往一个篮子(sum)
里放苹果,每次苹果的总数都是由篮子里苹果数(sum
)+新放进去的苹果数(i
)。
四、do while
语法:
do
{
//循环体
}while(循环条件);
do…while语法与while语法的唯一区别就是,do…while语法先执行一遍循环体再判断循环条件;while是先判断循环条件,如果true则再执行循环体,如果false则不执行循环体。
**注意:**do…while(); 后面有分号
。
流程图:
例:
int i = 0;
while (i < 0)
{
printf("say hello\n");
i++;
}
int i = 0;
do
{
printf("say hello\n");
i++;
} while (i < 0);
运行上述两个案例,感受其区别。
五、无限循环
无限循环又称之为死循环
,是指循环条件永远为真
的循环。
如:
while(1)
{
printf("hello, world\n");
}
以上会不断打印 hello, world
总结: 循环结构在编程中无疑是非常重要的,本节内容中while循环使用频率非常高,童鞋们只要牢牢把握好循环三要素规则,相信能得心应手。
如果循环三要素某个遗漏或者错误,则很可能导致无限循环或无法进入循环体。下一节讲解for循环、循环控制、嵌套循环。
练习:
1.分别输出1~100之间的偶数、奇数。
2.输出10000-99999里面的所有回文数。说明:即12321是回文数,个位与万位相同,十位与千位相同。
3.输出1900-2012的闰年。
4.输出所有三位数的水仙花数,水仙花数是指一个 3 位数,它是每个位上的数字的 3次幂之和,如:1^3 + 5^3+ 3^3 = 153。
5.有一对兔子,从出生后的第3个月开始每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有兔子都不死,问30个月内,每个月的兔子总数分别是多少。