C语言中的控制语句(循环语句while、for)

devtools/2024/9/24 4:28:21/

循环语句

  • 什么是循环
    • 重复执行代码
  • 为什么需要循环
  • 循环的实现方式
    • while
    • do...while
    • for

while语句

 语法格式:

while (条件) {循环体……
}

需求:跑步5圈

示例代码:

#include <stdio.h>int main() {// 需求跑步5圈// 1. 条件变量的定义int i = 1;// 2. while 控制重复的次数while (i <= 5) {// 3. 打印跑步第几圈printf("跑步第 %d 圈\n", i);// 4. 条件改变i++;}return 0;
}

do...while语句

语法格式:

do {循环体……
} while (条件);
  • do-while 循环语句是在执行循环体之后才检查 条件 表达式的值
  • 所以 do-while 语句的循环体至少执行一次,do…while也被称为直到型循环

需求:跑步5圈

示例代码:

#include <stdio.h>int main() {// 需求跑步5圈// 1. 条件变量的定义int i = 1;do {// 2.1 打印跑步第几圈printf("跑步第 %d 圈\n", i);// 2.2 条件改变i++;} while ( i <= 5 ); // 3. 控制重复的次数return 0;
}

 for语句

语法格式:

for ( init; condition; increment ) {循环体
}
  • init会首先被执行,且只会执行一次
  • 接下来,会判断 condition,如果条件condition为真
  • 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句
  • 条件再次被判断

需求:跑步5圈

示例代码:

#include <stdio.h>int main() {// 需求跑步5圈for (int i = 1; i <= 5; i++) {printf("跑步第 %d 圈\n", i);}return 0;
}

 死循环

  • 条件永远为真的循环就是死循环
  • 示例代码
​
#include <stdio.h>int main() {// while (1) {//     printf("根本停不下来\n");// }for(;;) {printf("根本停不下来\n");}return 0;
}​

循环案例

实现1+2+3……100所有数字的累加

#include <stdio.h>int main() {// 需求:实现1+2+3……100所有数字的累加// 定义条件变量初始值为1int i = 1;// 定义累加变量,初始值为0int sum = 0;// 循环控制100次while (i <= 100) {// 累加sum += i;// 条件改变i++;}// 循环外面,打印最终的累加和printf("sum = %d\n", sum);// for循环实现int temp = 0;for (int i = 1; i <= 100; i++) {temp += i;}printf("temp = %d\n", temp);return 0;
}

循环嵌套

需求如下:

通过for循环嵌套打印内容:
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
说明:
1)每行有5个*,总共有5行
2)*之间有空格隔开
3)printf()1次只能打印1个*

示例代码:

#include <stdio.h>int main() {for (int i = 0; i <= 4; i++) {for (int j = 0; j <= 4; j++) {printf("* ");}printf("\n");}return 0;
}

跳转关键字

  • 循环和switch专属的跳转:break
  • 循环专属的跳转:continue
  • 无条件跳转:goto

break

  • 循环的break说明
    • 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环
  • 需求:一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭动作

示例代码:

#include <stdio.h>int main() {// 需求: 一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭动作// 1. 定义条件变量,为了查看方便, 计数器从 1 开始int i = 1;while (i <= 5) { // 2. 控制条件if (i == 3) {printf("吃饱了,不吃了\n");break; // 结束循环,退出循环}printf("吃第 %d 碗饭\n", i);// 3. 条件变量改变i++;}return 0;
}

continue

  • 某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断
    • while循环,continue 之前一定要修改计数器(条件变量),否则,导致死循环
  • 需求:一共吃5个苹果,吃到第3个遇到虫子,这个跳过不吃,下一个继续

示例代码:

#include <stdio.h>int main() {// 需求: 一共吃5个苹果,吃到第3个遇到虫子,这个跳过不吃,下一个继续// 1. 定义条件变量,为了查看方便, 计数器从 1 开始int i = 1;while (i <= 5) { // 2. 控制条件if (i == 3) {printf("这个有虫子,不吃了\n");i++;    // continue 之前一定要修改计数器(条件变量),否则,导致死循环continue;; // 跳过本次循环,下次继续}printf("吃第 %d 个苹果\n", i);// 3. 条件变量改变i++;}return 0;
}

goto

  • goto用于无条件跳转
    • 在一种情况下可以使用goto语句:从一组嵌套的循环中跳出
  • goto语句可以导致代码不易理解和维护,并且容易引入不必要的错误。因此,除非必要,最好不要使用goto语句

示例代码:

#include <stdio.h>int main() {int i = 0;while (i < 3) {if(i == 1) {goto End;	// 跳转到End标签}printf("i = %d\n", i);i++;}End:printf("this is ending!\n");return 0;
}


http://www.ppmy.cn/devtools/6598.html

相关文章

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树&#xff0c;主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序&#xff0c;并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括&#xff1a; B树为…

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格&#xff0c;例子11.源码12.源码1效果截图 四、给表格添加动画效果&#xff0c;例子21.源码22.源码2的运行效果 五、结语六…

SPI总线通讯协议

文章目录 SPIQSPISPI配置SPI读写一个字节W25Q128初始化读取SPI FLASH写SPI FLASH SPI SPI:串行外围设备接口(Serial peripheral interface)&#xff0c;一种高速&#xff0c; 全双工、同步的通信总线。 SPI使用4条线通信&#xff1a; MISO&#xff1a;主设备数据输入&#xf…

状态模式(状态和行为分离)

状态模式 文章目录 状态模式什么是状态模式状态模式好处与用处什么时候考虑使用状态模式通过示例了解状态模式 什么是状态模式 状态模式(State),当一个对象的内在状态改变时允许改变其行为&#xff0c;这个对象看起来像是改变了其类 状态模式主要解决的是当控制一个对象状态转换…

CSS3 max/min-content及fit-content、fill-available值的详解

c3中对width的值多了几个值&#xff1a;fill-available, max-content, min-content, 以及fit-content。 1.width:fill-available 我们在页面中扔一个没有其他样式的<div>元素&#xff0c;则&#xff0c;此时&#xff0c;该<div>元素的width表现就是fill-availabl…

c++11 标准模板(STL)本地化库 - 平面类别(std::collate) - 定义字典序比较和字符串的散列(三)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 定义字典序比较和字符串的散列 std::collate template< class…

东岸科技将赴港IPO,冲刺催收第一股

来源 | 镭射财经&#xff08;leishecaijing&#xff09; 「镭射财经」独家获悉&#xff0c;东岸科技即将开启IPO&#xff0c;向港交所递交上市申请。计划上市的为公司科技板块&#xff0c;拟募集资金主要用于不良资产管理数字化创新。 今年3月&#xff0c;东岸科技董事长朱铁…

数据结构习题--杨辉三角形(返回某一行)

数据结构习题–杨辉三角形(返回某一行) 输入需要第几行&#xff0c;返回杨辉三角形中的这一行 注意&#xff1a;这里的行数是从0开始 方法&#xff1a;递推(复杂度行数的平方) 分析&#xff1a; 当处于每行的第一个和最后一个时&#xff0c;添加的数为1 除此之外&#xff0…