C++中的嵌套循环(超详细)

C++中的嵌套循环(超详细)

就像嵌套 if 语句一样,经常需要在一个循环内嵌套另一个循环。循环的嵌套就是,一个循环体内又包含了另一个完整的循环结构;内嵌的循环中还可以嵌套循环,这就是多层循环。

在C++中,while循环、do while循环、for循环都可以互相嵌套,例如以下几种

while语句嵌套while语句

while()
{
    //……
    while()
    {
        //……
    }
}

do while语句嵌套do while语句

do
{
    //……
    do
    {
        //…… 
    } while();
} while();

for语句嵌套for语句

for(;;)
{
    //……
    for(;;)
    {
        //……
    }
}

while语句嵌套do while语句

while()
{
    //……
    do
    {
        //……
    }while();
}

for语句嵌套while语句

for(;;)
{
    //……
    while()
    {
        //……
    }

}

do while语句嵌套for语句

do
{
    //……
    for(;;)
    {
        //……
    }
}while();

案例一

假设有两个 int 数组,而您想将 array1 的每个元素与 array2 的每个元素相乘,则通过使用嵌套循环,这种编程工作将很容易完成。第一个循环遍历 array1,第二个循环遍历 array2,且位于第一个循环内部。
示例程序演示了嵌套循环的用法:

#include <iostream>
using namespace std;

int main()
{
    const int ARRAY1_LEN = 3;
    const int ARRAY2_LEN = 2;

    int myNums1[ARRAY1_LEN] = {35, -3, 0};
    int myNums2[ARRAY2_LEN] = {20, -1};

    cout << "Multiplying each int in myNums1 by each in myNums2:" << endl;

    for(int index1 = 0; index1 < ARRAY1_LEN; ++index1)
        for(int index2 = 0; index2 < ARRAY2_LEN; ++index2)
            cout << myNums1[index1] << " x " << myNums2[index2] \
            << " = " << myNums1[index1] * myNums2[index2] << endl;

    return 0;
}

输出:

Multiplying each int in myNums1 by each in myNums2:
35 x 20 = 700
35 x -1 = -35
-3 x 20 = -60
-3 x -1 = 3
0 x 20 = 0
0 x -1 = 0

分析:

第 13 和 14 行是两个嵌套的 for 循环。第一个 for 循环遍历数组 myNums1,而第二个 for 循环遍历数组 myNums2。第一个 for 循环每次迭代时, 都执行第二个 for 循环。第二个 for 循环遍历数组 myNums2,在每次迭代中, 都将数组 myNums2 中的当前元素与数组 myNums1 中索引为 index1 的元素相乘。 因此,对于 myNums1 中的每个元素,第二个循环都遍历 myNums2 的所有元素。其结果是,首先将 myNums1 的第一个元素(偏移量为 0)与数组 myNums2 的每个元素相乘;然后,将 myNums1 的第二个元素与数组 myNums2 的每个元素相乘;最后,将 myNums1 的第三个元素与数组 myNums2 的每个元素相乘。

案例二:九九乘法表

九九乘法表就是一个9X9的平面图形,只不过它不是一个完整的矩形,而是一个三角形结构。第一行只有1列,第二行有2列,依次每行增加1列,到第九行有9列。

//外层循环,循环9行,所以结束条件应该为9
for(int j=1;j<=9;j++)
{
    //内层循环,受行的影响,
    //所以与外部的循环变量j(行)有关
    for(int i=1;<=j;i++)
    {
        cout << j << "*" << i << "=" << j*i << " ";
    }
    cout << endl;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值