8.循环

课程推荐视频:https://edu.51cto.com/sd/1d294

8.1 循环

有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

循环类型

描述

while 循环

当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。

for 循环

多次执行一个语句序列,简化管理循环变量的代码。

do...while 循环

除了它是在循环主体结尾测试条件外,其他与 while 语句类似。

嵌套循环

您可以在 while、for 或 do..while 循环内使用一个或多个循环。

8.2 C while 循环

只要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句。

8.2.1 语法

C 语言中 while 循环的语法:

while(condition){statement(s);}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

8.2.2 流程图

在这里,while 循环的关键点是循环可能一次都不会执行。当条件为 false 时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。

8.2.3 实例

#include intmain (){/* 局部变量定义 */inta =10;/* while 循环执行 */while(a <20){printf("a 的值:%d\n", a);a++;}return0;}

当上面的代码被编译和执行时,它会产生下列结果:

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 15

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

8.3 do...while 循环

不像  while 循环,它们是在循环头部测试循环条件。在 C 语言中,do...while 循环是在循环的尾部检查它的条件。do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。

8.3.1 语法

C 语言中 do...while 循环的语法:

do{statement(s);}while(condition );

请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。

8.3.2 流程图

8.3.3 实例

#include

int main ()

{

/* 局部变量定义 */

int a = 10;

/* do 循环执行,在条件被测试之前至少执行一次 */

do

{

printf("a 的值:%d\n", a);

a = a + 1;

}while( a < 20 );

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 15

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

8.4 for 循环

for 循环允许您编写一个执行指定次数的循环控制结构。

8.4.1 语法

C 语言中 for 循环的语法:

for ( ini t; condition; increment ){   statement(s);}

下面是 for 循环的控制流:

  1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。

  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。

  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。

  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

8.4.2 流程图

8.4.3 实例

实例

#include <stdio.h>  int main (){   /* for 循环执行 */   for( int a = 10; a < 20; a = a + 1 )   {      printf("a 的值:%d\n", a);   }   return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 15

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

8.5 嵌套循环

C 语言允许在一个循环内使用另一个循环,下面演示几个实例来说明这个概念。

C 语言中 嵌套 for 循环 语句的语法:

for (initialization; condition; increment/decrement)

{

   statement(s);

   for (initialization; condition; increment/decrement)    {

       statement(s);

       ... ... ...

   }

   ... ... ...

}

C 语言中 嵌套 while 循环 语句的语法:

while (condition1){    statement(s);    while (condition2)    {        statement(s);        ... ... ...    }    ... ... ...}

C 语言中 嵌套 do...while 循环 语句的语法:

do{    statement(s);    do    {        statement(s);        ... ... ...    }while (condition2);    ... ... ...}while (condition1);

关于嵌套循环有一点值得注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。

8.5.3 实例

下面的程序使用了一个嵌套的 for 循环来查找 2 到 100 中的质数:

for 嵌套实例

#include <stdio.h>  int main (){   /* 局部变量定义 */   int i, j;   for(i=2; i<100; i++)   {      for(j=2; j <= (i/j); j++)         if(!(i%j)) break; // 如果找到,则不是质数      if(j > (i/j))         printf("%d 是质数\n", i);   }   return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

2 是质数

3 是质数

5 是质数

7 是质数

11 是质数

13 是质数

17 是质数

19 是质数

23 是质数

29 是质数

31 是质数

37 是质数

41 是质数

43 是质数

47 是质数

53 是质数

59 是质数

61 是质数

67 是质数

71 是质数

73 是质数

79 是质数

83 是质数

89 是质数

97 是质数

while 嵌套实例

#include <stdio.h>

int main()

{

int i=1,j;

while (i <= 5)

{

j=1;

while (j <= i )

{

printf("%d ",j);

j++;

}

printf("\n");

i++;

}

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

do-while 嵌套实例

#include <stdio.h>

int main()

{

int i=1,j;

do

{

j=1;

do

{

printf("*");

j++;

}while(j <= i);

i++;

printf("\n");

}while(i <= 5);

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

*

**

***

****

*****

c语言for循环可以初始化多个变量么_C8循环相关推荐

  1. 【C++】For循环同时初始化两个变量

    文章目录 0.引言 1.初始化同类型变量 2.初始化两个不同类型的变量 0.引言 \qquadC++的for循环在初始化时可以通过类型定义符直接初始化两个相同类型的变量,但是对于不同类型的变量是不可以 ...

  2. c++ 初始化 代码 应放在那里_Go语言goroutine调度器初始化 (12)

    先吐槽一下,知乎编辑器居然不支持汇编语言,代码的空格也给我弄没了,你说你把运算符两边的空格搞掉就搞掉吧,还能看,你为啥要把if, for后面的空格也搞掉啊... 本文是<Go语言调度器源代码情景 ...

  3. c语言结构体指针初始化

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  4. 【C语言笔记初级篇】第二章:分支与循环

    目录 (1)什么是语句 (2)分支语句 A:if语句 B:switch语句 (3)循环语句 A:while B:for循环 C:do while循环 (4)goto语句 A:goto语句说明 B:go ...

  5. C语言题目:打印华氏温度与摄氏温度对照表(for循环思路一)(有能力的同学老师们赞一下呀)

    题目:打印华氏温度与摄氏温度对照表 输出格式: 0            -17 20           -6 40          -4 ... 300        148 公式:c = (5 ...

  6. 【C语言】C语言的三种基本控制结构-顺序、选择、循环

    目录 1.算法 1.1算法的概念 1.2算法的表示方法 1.2.1自然语言 1.2.2流程图 1.2.3伪代码 1.2.4C语言 2.C语句 3.数据的输入输出 3.1格式输入输出函数 1.print ...

  7. C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)

    数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...

  8. C语言结构体指针初始化(转)

    reference: https://www.cnblogs.com/losesea/archive/2012/11/15/2772526.html 今天来讨论一下C中的内存管理. 记得上周在饭桌上和 ...

  9. 《看聊天记录都学不会C语言?太菜了吧》(12)循环有多容易?你看一眼就怀...

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

最新文章

  1. SQL Server数据类型
  2. Android错误-error:Foundtextwhereitemtagisexpected
  3. java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?
  4. 二叉树建立及中序遍历C++语言实现
  5. Java中的浅克隆和深克隆
  6. CS231n李飞飞计算机视觉 循环神经网络
  7. vim 常用的快捷键
  8. 【工具】Get Data-获取论文图片中数据的工具
  9. C++(类与对象)是纸老虎吗?
  10. 微信公众平台开发-access_token获取及应用(含源码)
  11. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
  12. 老男孩MySqI DBA周末班(三期)
  13. 为什么要使用微信活码?
  14. 面试问题某个项目中遇到过什么问题
  15. 音乐播放时跳动的音符
  16. ltsc系统升级为服务器,微软宣布Windows Server 2022开始转向LTSC 不再发布半年频道更新...
  17. Java 获取昨天的日期
  18. 【GXOI/GZOI2019】逼死强迫症(生成函数)
  19. 几何基元_.NET异步协调基元中的两种技术比较
  20. html5扩展函数的使用方法,知识分享:JavaScript基础语法

热门文章

  1. angular drag and drop (ngDraggable) 笔记
  2. ajax请求到参数太大获取参数失败问题,Ajax请求参数较长导致请求失败
  3. turtle模块还能这样玩?(一条条金龙鱼、雨景)
  4. 程序设计基础要用计算机吗,计算机二级公共基础知识|程序设计基础
  5. Python基于用户协同过滤算法电影推荐的一个小改进
  6. Python使用正则表达式检查书稿中不应该出现的重复字
  7. 全国Python科研应用专题实操培训班
  8. python对csv数据提取某列的某些行_python pandas获取csv指定行 列的操作方法
  9. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  10. Linux关闭java命令,Linux系统关闭或重新启动主机的命令详解