C语言循环for、while、do while、continue、break 、goto控制语句实例讲解
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了允许更为复杂的执行路径的多种控制结构。
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:
循环类型
C 语言提供了以下几种循环类型。点击链接查看每个类型的细节。
循环类型 | 描述 |
---|---|
while 循环 | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |
for 循环 | 多次执行一个语句序列,简化管理循环变量的代码。 |
do...while 循环 | 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 |
嵌套循环 | 您可以在 while、for 或 do..while 循环内使用一个或多个循环。 |
(1)while 循环
格式如下:
while ( 条件 ){
语句1;
语句2;
....
}
1)如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容)。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
2)while循环的特点:如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
例如:
/*
输出十次hello world
*/
int main(){
int i = 0;
while (i < 10) {
printf("Hello world!----%d\n",i);
i++;
}
}
如果省略第11行的i++,count就一直是i,那么i<10一直都是成立的,这个while循环将会陷入“死循环”,一直在重复执行第10行代码。
(2)do while 循环
格式如下:
do {
语句1;
语句2;
...
} while (条件);
1)注意第5行,后面是加上一个分号;的
2)当执行到do-while循环时,首先会执行一遍循环体中的语句(“循环体”就是do后面大括号{}中的内容)。接着判断while中的条件,如果条件成立,就执行循环体中的语句。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
3)do-while循环的特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍
4)其实do while循环的用法跟while循环是差不多的,这里就不举例子了。
(3)for循环
for循环是所有循环结构中最复杂的。
for (语句1; 条件; 语句2) {
语句3;
语句4;
...
}
1)for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1
2)接着判断条件,如果条件成立,就会执行循环体中的语句(“循环体”就是for后面大括号{}中的内容)
3)循环体执行完毕后,接下来会执行语句2,然后再次判断条件,重复上述过程,直到条件不成立就结束for循环
例如 :
int main(){
/*
利用循环输出:
1
1 2
1 2 3
*/
for (int i =1 ; i <= 3; i++) {
for (int j = 1; j <= i; j++) {
printf("%d ",j);
}
printf("\n");
}
return 0;
}
输出结果为:
1
1 2
1 2 3
循环控制语句
循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。
C 提供了下列的控制语句。点击链接查看每个语句的细节。
控制语句 | 描述 |
---|---|
break 语句 | 终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。 |
continue 语句 | 引起循环跳过主体的剩余部分,立即重新开始测试条件。 |
goto 语句 | 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |
(1) break
前面在switch语句中已经用到了break,它的作用是跳出switch语句。它也可以用在循环结构中,这时候它的作用是跳出整个循环语句。
这里以for循环为例子,break也可以用在while循环、do-while循环中。
for (int i = 0; i<5; i++) {
printf("i=%d \n", i);
if (i>2) {
break;
}
}
上面代码的意思是当i>2时,就跳出整个for循环,也就是结束for循环,所以输出结果是:
i=0
i=1
i=2
i=3
(2)continue
continue只能使用在循环结构中,它的作用是跳过这一次循环,直接进入下一次循环。
这里以for循环为例子,continue也可以用在while循环、do-while循环中。
for (int x = 0; x<10; x++) {
if (x%2==0) {
continue;
}
printf("x=%d \n", x);
}
注意第2行,当x%2==0,也就是当x是2的倍数时,就跳过这次循环,不执行第6行语句,直接进入下一次循环。输出结果:
x=1
x=3
x=5
x=7
x=9
跟break一样,continue只会影响它所在的那个for循环
无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("This loop will run forever.\n");
}
return 0;
}
当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C 程序员偏向于使用 for(;;) 结构来表示一个无限循环。
注意:您可以按 Ctrl + C 键终止一个无限循环。
- Oracle总结【视图、索引、事务、用户权限、批量操作】
- 02 使用Mybatis的逆向工程自动生成代码
- 关于ORA-12801,ORA-27090的简单分析(r4笔记第58天)
- Oracle总结【PLSQL学习】
- 01 Maven构建的项目中,把.xml等配置文件添加到编译目录
- Java 语法清单-快速回顾
- 常用的CSS框架
- JsChart组件使用
- 01 Spring Boot 的简单配置和使用
- 浅谈CDN、SEO、XSS、CSRF
- 09(02)总结final,多态,抽象类,接口
- 关于sql_profile中的绑定变量(r4笔记第57天)
- 02 浅析Spring的AOP(面向切面编程)
- 数据库原理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- wecenter反序列化造成任意SQL语句执行
- SAP Spartacus 读取payment detail数据的API
- SRCMS 多处越权+权限提升管理员漏洞
- SAP Spartacus把指定产品添加到购物车的API
- MyBatis源码解析之基础模块—Plugin
- php框架slim架构上存在XXE漏洞(XXE的典型存在形式)
- 个人博客搭建
- 安全箱子的秘密
- Linux 机器 CPU 毛刺问题排查
- phpwind 利用哈希长度扩展攻击进行getshell
- dotnet 构建 SourceRoot items must include at least one top-level item when DeterministicSourcePaths is
- Magicodes.IE 2.4版本发布
- EC2磁盘扩容-DiskPressure
- 谈一谈php://filter的妙用
- 新型php漏洞挖掘之debug导致的安全漏洞(Edusoho)