C++青少年简明教程:for循环语句

C++青少年简明教程:for循环语句

C++的for循环语句是一种迭代控制语句,用于重复执行一段代码。

传统for语法格式

for (initialization; condition; increment/decrement) {

    // Loop body

}

initialization:初始化表达式,只在循环开始之前执行一次。这通常用于设置循环控制变量的初始值。初始化部分可以声明多个变量,用逗号分隔,如int i = 0, j = 0;。

condition:条件表达式,每次循环迭代之前都会评估。如果评估为true,则执行循环体;如果评估为false,则跳过循环体,并结束循环。

increment/decrement:更新表达式,每次循环迭代之后都会执行。这通常用于更新循环控制变量,以控制循环何时结束。更新表达式可以包含多个操作,用逗号分隔,如i++, j--。

Loop body:循环体,这是每次循环迭代时都会执行的代码块。

写为

for(表达式1;表达式2;表达式3)

循环体

for循环语句执行流程图:

不太好理解,请看下图:

用for语句计算1到10的整数之和的源码:

#include<iostream> 
using namespace std;

int main(){
	int sum = 0, n = 10;
	for (int i = 1; i <= n; i++) {
	    sum += i;
	}
	
	cout << "1到" << n << "的整数之和为:" << sum << endl;
}

for语句可以嵌套,下面是一个使用嵌套循环打印乘法口诀表的例子:

#include<iostream> 
using namespace std;

int main(){
	for (int i = 1; i <= 9; i++) {
	    for (int j = 1; j <= i; j++) {
	        cout << j << "x" << i << "=" << i*j << " ";
	    }
	    cout << endl;
	}
}

这个程序使用两个for循环嵌套,分别用于打印乘法口诀表的每一行和每一列。内层循环中,j从1逐渐增加到i,每次循环将j和i的乘积打印出来;外层循环中,i从1逐渐增加到9,每次循环打印出一个乘法口诀表的行。最终的输出结果如下:

1x1=1 
1x2=2 2x2=4 
1x3=3 2x3=6 3x3=9 
1x4=4 2x4=8 3x4=12 4x4=16 
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

注意,在 C++ 的 for 循环语句中,控制变量的定义可以在括号内或括号外(for语句的前面)进行。

如果在括号内定义控制变量,那么该变量的作用范围仅限于 for 循环的代码块内部。这意味着该变量只在循环执行期间可见,并且在每次循环迭代结束时都会销毁和重新创建。

如果在括号外(for语句的前面)定义控制变量,那么该变量的作用范围将扩展到整个循环语句所在的代码块内部。这意味着该变量在循环之外也是可见的,并且在循环迭代之间保持其状态。

因此,控制变量是在括号内还是括号外(for语句的前面)定义,会影响该变量的作用范围和可见性。根据您的需求选择适合的方式。

在for语句外部进行初始化示例:

#include <iostream>
using namespace std; 

int main() {
    int i = 0;  // 初始化表达式 在`for`语句之前

    for (; i <=5; ++i) { // 注意这里省略了初始化表达式
        cout << i << " ";  //输出:0 1 2 3 4 5 
    }

    // 变量i仍然可用,此时i的值是6,因为它在循环内部被递增了5次  
    cout << "\n循环结束后,i的值是:" << i << endl;

    return 0;
}

输出:

0 1 2 3 4 5
循环结束后,i的值是:6

基于范围的for循环

C++11引入了基于范围的for循环,用于遍历容器或数组中的每个元素。

语法

for (declaration : range) {

    // Loop body

}

declaration:用于声明循环变量,该变量在每次迭代中代表范围中的当前元素。

range:要遍历的容器、数组或其他范围表达式。或者说,range代表要遍历的范围,可以是任何可迭代对象。

在基于范围的for循环中,范围可以是任何可迭代对象,如std::vector、std::list等(关于std::vector、std::array,详见“STL入门介绍”一节)。

示例:

#include <iostream>
#include <vector>
using namespace std; 

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    
    // 打印向量中的每个元素
    for (int value : vec) {
        cout << value << " ";
    }
    return 0;
}

输出:
1 2 3 4 5

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值