C++入门基础:C++中的循环语句

循环语句是编程语言中用来重复执行一段代码直到满足特定条件的一种控制结构。它们对于处理需要重复任务的场景非常有用,比如遍历数组、累加数值、重复执行某项操作直到满足条件等。

但是在使用循环语句的时候需要注意下哈,有时候一不小心会构成死循环或者屎山代码.

基础循环语句

在C++中,主要有三种基础循环语句,分别是for、while、do-while:

  • for循环 :
    for循环是最常用的循环语句,它的一般形式为for (初始化表达式(比如:i = 1); 循环条件表达式(比如:i < 10); 循环后的操作表达式(i++)) { 循环体(比如:cout << i << endl;) },这里会在终端中从1打印到10.
    通常用于执行固定次数的循环。
cpp 复制代码
#include <iostream>  
using namespace std;  
 
int main() {  
   for (int i = 1; i <= 10; i++) {
       cout << i << endl;
   }   
}

运行结果

  • while循环 :
    while循环的一般形式为while (循环条件表达式) { 循环体 }。
    它会在每次循环开始前检查条件表达式,如果条件为真,则执行循环体;否则退出循环。
    这里打印一个小三角:
cpp 复制代码
#include <iostream>  
using namespace std;  
  
int main() {  
    int n = 5; 
    int i = 1;  
    while (i <= n) {  
        int j = 1;  
        while (j <= n - i) {  
            cout << " ";  
            j++;  
        }  
        int k = 1;  
        while (k <= 2 * i - 1) {  
            cout << "*";  
            k++;  
        }  
        cout << endl;  
        i++;  
    }  
    return 0;  
}
  • do-while循环 :
    do-while循环的一般形式为do { 循环体 } while (循环条件表达式);。
    它至少执行一次循环体,然后在每次循环结束时检查条件表达式,如果条件为真,则继续循环;否则退出循环。
    这里打印一个大三角:
cpp 复制代码
#include <iostream>  
using namespace std;  
  
int main() {  
    int n = 9; 
    int i = 1;  
    do {  
        int j = 1;  
        do {  
            cout << " ";  
            j++;  
        } while (j <= n - i);  
          
        int k = 1;  
        do {  
            cout << "*";  
            k++;  
        } while (k <= 2 * i - 1);  
          
        cout << endl;  
        i++;  
    } while (i <= n);  
    return 0;  
}

其余方法

  • goto语句 :
    尽管 goto不是专门用于循环的语句,但它可以被用来创建循环结构。goto语句允许程序无条件地跳转到程序中指定的标签处。通过合理地设置标签和跳转条件,可以实现循环的效果。
cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int i = 0;
loop_start: // 定义一个标签
    if (i < 10) {
        cout << i << endl;
        i++;
        goto loop_start; // 跳转到标签,形成循环
    }
    return 0;
}
  • 基于范围的for循环(得是C++11及以上版本) :
    一般语法为for (声明类型 变量名 : 容器名) { 循环体 },用于遍历容器(如std::vector、std::array、std::list等)、数组或其他序列中的元素,无需使用索引或迭代器。

    cpp 复制代码
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        vector<int> numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            cout << num << " ";
        }
        // 输出: 1 2 3 4 5
        return 0;
    }

以上代码会在终端输出12345

  • std::for_each方法 :
    std::for_each是C++标准库算法中的一个函数模板,它接受一个迭代器范围和一个函数对象(或Lambda表达式),并对范围内的每个元素执行该函数对象。虽然不是循环语句,但可以用于遍历容器并执行特定操作,实现循环的效果。

    cpp 复制代码
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    void print(int i) {
        cout << i << " ";
    }
    
    int main() {
        vector<int> vec = {1, 2, 3, 4, 5};
        for_each(vec.begin(), vec.end(), print);
        // 输出: 1 2 3 4 5
        return 0;
    }

    也是在终端输出12345

相关推荐
fengci.6 分钟前
CTF2MISC中等部分
开发语言·前端·学习
xys_6782 小时前
JavaEE通关手册:初识Java
java·开发语言
努力努力再努力wz2 小时前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua
慧都产品智能化2 小时前
Qt 表格升级攻略:复用已有编辑器,减少重复开发
c++·qt·编辑器·qt6.3
ShineWinsu3 小时前
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
开发语言·c++·qt·gui·客户端·表格·qtablewidget
ShineWinsu4 小时前
对于Qt:QListWidget常见属性以及QListWidgetItem类的解析
开发语言·c++·qt·客户端·列表·qlistwidget·qlistwidgetitem
坤坤子吖4 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
吴名氏.4 小时前
Java转AI Agent教程(第十二周)检索与切分
java·开发语言·人工智能·ai·ai agent
瑞雪兆丰年兮5 小时前
JavaWeb-day10-SpringBootWeb案例
java·开发语言·javaweb·web
Elastic 中国社区官方博客5 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎