IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C/C++中的循环语句 -> 正文阅读

[C++知识库]C/C++中的循环语句

作为循环语句,while、for 以及 do…while 实现的都是将循环体重复执行。这里涉及到一个问题:循环体反复执行,什么时候终止呢?比如我在电脑桌面显示一个界面,要使得界面一直进行显示,我可以令界面进入一个循环的状态,不让其关闭,直到我点击关闭窗口按钮。
我们要给循环添加一个终止条件,当满足这个终止条件时循环终止。有了循环的终止条件,比如 i < 10, 那这个 i 就必须保证它的值是可以变化的(如果i的值不变化,比如 i = 7,循环终止条件永不触发那么循环体就会一直进行下去,陷入死循环)。这就要求我们必须在循环体内对 i 的值进行修改,使其不断接近终止条件。
结合循环进行的条件,再来看 while、for 以及 do…while 语句。

while语句

循环变量的定义(初始化);
while(循环条件){
    循环体;
    步进语句;
}

我在写while循环时经常会忘记写步进语句导致死循环的产生。后来我再写while语句时,大括号里我就先写步进语句。

for语句

for(循环变量的初始化; 循环条件; 步进语句){
    循环体;
}

for语句中循环变量的初始化、循环条件、步进语句并不一定要写在上述的位置。但是这样写既不显突兀又能规避一些问题。所以非必要请按照上述的写法书写。

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int i = 0;
    int j = 0;
    for( ; i < 3; i++){
        for( ; j < 3; j++){
            // 内层循环只执行3次,因为 j 在进入循环时未初始化,其作用域为 main 函数,
            // 因此 j 加到 3 后,并不会进行 等于 0 的初始化,从而内层 for 循环无法进入。
        }
    }
    return 0;
}

do…while语句

循环变量的定义(初始化);
do{
    循环体;
    步进语句
}while(循环条件);

break 和 continue

break、continue 和循环语句密不可分。它俩在循环中的作用结合其字面意思可进行推导。break-打破,打破什么,在循环体中那当然是打破循环了。所以 break 在循环中的作用就是打破循环(终止循环的进行,直接执行循环语句之后的代码)。continue-继续,继续什么,是继续 continue 之后的代码片段吗??如果是那为何要多此一举呢?所以 continue 一定不是继续其后面的循环体。循环结构一共就那几部分组成,不是循环语句体,那就是只能是循环本身了。所以 continue 的作用立显:不再执行 continue 之后的语句,遇到 continue 转到循环条件的判定,继续执行下一次循环。

#include <stdio.h>

#define NUMBER 10

int main(int argc, char const *argv[]) {
    int i = 1;
    while (i < NUMBER) {
        if (i == 5) {
            break;
        }
        // 输出 i 的值
        i++;
    }

    i = 0;
    while (i < NUMBER) {
        if (i == 5) {
            continue;
        }
        // 输出 i 的值
        i++; 
    }

    return 0;
}

// 使用 break 最终输出的结果为 1 2 3 4
// 使用 continue 最终输出的结果为 1 2 3 4 6 7 8 9

break、continue 和 return 的辨析

break 和 continue 用于循环语句中(break也用于switch语句),return 用于函数中。
我们可能会在函数中遇到 break、continue,或者在循环中遇到 return 这都很正常。关键是根据具体场景分析 break、continue 以及 return 语句的主体,得出其匹配的结构。

三种循环语句的比较

while 和 for 语句类似都是先判断,当满足循环条件时执行循环体。
do…while 语句是先执行,执行完后判断循环终止条件,不满足时退出。
while 和 for 的差别体现在步进语句上。遇到 continue,for循环的步进语句一定会执行,但是 while 的步进语句是否执行和 continue 的位置有关。

#include <stdio.h>

int main(int argc, char const *argv[]) {
    int i = 0;
    for (; i < 10; i++) {
        if (i == 5) 
            continue;
        // 打印 i 的值
    }

    while (i < 10) {
        if (i == 5) 
            continue;
        // 打印 i 的值
        i++;
    }

    return 0;
}

// 使用 for 循环,continue执行之后,步进语句会被执行 i 值变为 6
// 使用 while 循环,continue执行之后,步进语句不会被执行 i 值仍然为 5
// 最终导致 for 循环能正常执行,而 while 循环进入死循环(i = 5, < 10 且i值得不到修改导致循环条件始终成立)

练习题

已知使用 getchar 可以获取来自键盘的一个输入 int ch = getchar();
编写程序,当输入 EOF 时,程序退出,否则等待下次输入。
EOF:文件结束标志。其值为 -1, 按下 Ctrl + Z 向控制台输入一个 EOF

// 已知使用 getchar 可以获取来自键盘的一个输入 int ch = getchar();
// 编写程序,当输入 EOF 时,程序退出,否则等待下次输入。
// EOF:文件结束标志。其值为 -1, 按下 Ctrl + Z 向控制台输入一个 EOF

#include <stdio.h>
int main(int argc, char const *argv[]) {
    int ch = 0;
    // 使用 while 语句
    while ((ch = getchar()) != EOF){
    printf("%c", ch);
    }

    // for 语句
    for (; ch != EOF;) {
        ch = getchar();
        printf("%c", ch);
    }

    return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:35:33  更:2022-10-31 11:36:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:49:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码