C++--嵌套循环

246 阅读3分钟

C++中的嵌套循环是指在一个循环体内部再嵌套另一个或多个循环体,形成多层循环结构。嵌套循环可以用于处理多维数组、矩阵等数据结构,或者需要对多个变量进行循环遍历的情况。

以下是几个经典的例子:

image.png

下面是代码的逐行讲解:

  1. #include<iostream>:引入头文件iostream,使得程序可以使用输入输出流。
  2. using namespace std;:使用命名空间std,这样程序中就可以直接使用std命名空间中的函数和对象,而不需要加上std::前缀。
  3. int main(){:程序的主函数,程序的执行从这里开始。
  4. 注释部分给出了问题的描述。
  5. int men;:声明一个整型变量men,用于表示男人的数量。
  6. int women=0;:声明并初始化一个整型变量women,用于表示女人的数量,初始值为0。
  7. int kids=0;:声明并初始化一个整型变量kids,用于表示小孩的数量,初始值为0。
  8. int total=30;:声明并初始化一个整型变量total,用于表示总人数,初始值为30。
  9. int money=50;:声明并初始化一个整型变量money,用于表示总钱数,初始值为50。

10-19. 三层嵌套的for循环用于遍历所有可能的男人、女人和小孩的数量组合。循环变量i、j、k分别表示男人、女人和小孩的数量。循环的条件保证了人数和钱数的限制。

  1. if(i+j+k==total&&3*i+2*j+k==money){:判断当前的组合是否满足人数和钱数的条件。如果满足,则执行下面的语句。
  2. cout<<"男人:"<<i<<"\t女人:"<<j<<"\t小孩:"<<k<<endl;:输出当前的组合。
  3. system("pause");:调用系统命令pause,暂停程序的执行,等待用户按任意键继续。
  4. return 0;:程序执行完毕,返回0表示成功执行。

image.png

以下是代码的详细解释:

  1. for (int chicken = 1; chicken <= foot / 2; chicken++) {:

    • 这是一个for循环,用于遍历可能的鸡的数量。这里假设鸡的数量从1开始,并且不超过脚总数的一半(因为一只鸡有2只脚)。
  2. int rabbit = head - chicken;:

    • 这行代码计算兔子的数量。假设给定的头总数为head,那么head - chicken就是兔子的数量(因为一只兔子有一个头)。
  3. if(rabbit * 4 + chicken * 2 == foot){:

    • 这个if语句检查当前的鸡和兔子数量是否符合给定的脚总数。兔子有4只脚,鸡有2只脚。所以,rabbit * 4是兔子的脚总数,chicken * 2是鸡的脚总数。如果它们的和等于给定的foot,那么这个组合是可能的。
  4. cout<<"兔子为:"<<rabbit<<endl;:

    • 如果上述条件满足,这行代码会输出兔子的数量。
  5. cout<<"鸡为:"<<chicken<<endl;:

    • 同样,如果条件满足,这行代码会输出鸡的数量。

image.png

上面的代码中使用了两个嵌套的for循环来生成99乘法表。外层循环控制行数,内层循环控制列数。具体解释如下:

外层循环:

image.png

这个循环用于控制行数,i表示当前行数,从1到9遍历,每次递增1。

内层循环:

image.png

这个循环用于控制列数,j表示当前列数,从1到i遍历,每次递增1。这里的i是外层循环中的变量,因此每一行的列数都与行数相等。

在两个循环的内部,通过cout输出每个乘法表的项,使用制表符"\t"对齐不同的列,然后在每一行的结束使用endl输出换行符。

这样,通过两个嵌套的for循环,就可以生成完整的99乘法表。