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则不执行循环体。

流程图:

Created with Raphaël 2.2.0 开始 循环条件 循环体 结束 yes no

**例:**小明被罚跑步:
小明跑步

代码示例:

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(); 后面有分号

流程图:

Created with Raphaël 2.2.0 开始 循环体 循环条件 结束 yes no

例:

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个月内,每个月的兔子总数分别是多少。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值