C++循环:简化重复的代码

个人主页:PingdiGuo_guo

收录专栏:C++干货专栏

大家好,今天我们来学习一下循环!

文章目录

1.什么是循环?

2.重复的语句如何改为循环?

3.循环如何使用:do-while, for, while

1.while循环

1.语法形式

2.执行流程

3.代码示例

4.练习

2.do-while循环

1.语法形式

2.执行流程:

3.代码示例

4.练习

3.for循环

1.语法形式

2.执行流程

3.代码示例

4.练习

4.多重循环

5.三种循环对比

附:循环流程图

6.跳出循环

1.continue语句

1.语法形式

2.练习

2.break语句

1.语法形式

2.练习

7.循环的用处

8.总结


1.什么是循环?

循环是一种在编程中常用的结构,它允许我们重复执行一组语句。通过使用循环,我们可以避免重复输入相同的代码,提高代码的可读性和可维护性。在C++中,我们有几种类型的循环结构,包括do-while循环、for循环和while循环。

2.重复的语句如何改为循环?

在编写代码时,当有题目要重复输出3遍“Hello, world!”时,大家是不是很烦,如果再把题目增加到输出10、20、 30甚至是10000遍呢?大家是不是要疯了?然而,通过循环,我们只需要编写一次重复的代码,然后使用循环结构来控制重复执行的次数或条件。

下面是一个示例,将多条重复的语句改写为循环:

#include <iostream>

int main() {
    // 多条重复的语句
    std::cout << "Hello, world!" << std::endl;
    std::cout << "Hello, world!" << std::endl;
    std::cout << "Hello, world!" << std::endl;

    // 使用循环来简化
    for (int i = 0; i < 3; i++) {
        std::cout << "Hello, world!" << std::endl;
    }

    return 0;
}


具体步骤:

1. 在上述示例中,我们有三条重复的语句需要执行,即输出"Hello, world!"

2. 为了简化这些重复的语句,我们可以使用for循环来代替。首先,我们初始化一个循环变量i,并将其赋值为0(i = 0)。

3. 然后,我们设置循环条件(i < 3),只有在循环条件为真时循环才会继续执行。

4. 在每次循环迭代时,会执行循环体中的语句,即输出"Hello, world!"。

5. 循环迭代部分(i++)会更新循环变量i的值,使其逐渐增加。

3.循环如何使用:do-while, for, while

在C++中,我们有三种常用的循环结构:do-while循环、for循环和while循环。

1.while循环

while循环在每次循环之前检查循环条件,只有当条件为真时才执行循环体。

1.语法形式
 

while (条件) {
    // 循环体
}


2.执行流程

1. 检查循环条件是否为真,如果为假,则跳过循环体,继续执行循环后面的代码。
2. 如果条件为真,则执行循环体中的代码。
3. 再次检查循环条件,如果为真,继续执行循环体,直到条件为假才停止循环。

3.代码示例
 

int i = 0;
while (i < 5) {
    cout << i << " ";
    i++;
}


输出结果:

0 1 2 3 4

4.练习

使用while循环计算1到10的和。

分析:

我们可以使用一个计数器sum来累加,然后让i从1-10遍历即可

int sum = 0;
int i = 1;
while (i <= 10) {
    sum += i;
    i++;
}
cout << "1到10的和为:" << sum << endl;

2.do-while循环

do-while循环先执行一次循环体,然后再检查循环条件。即使条件不满足,至少会执行一次循环体。

1.语法形式

do {
    // 循环体
} while (条件);

2.执行流程:

1. 执行循环体中的代码。
2. 检查循环条件,如果为真,继续执行循环体。
3. 重复步骤1和步骤2,直到条件为假才停止循环。

3.代码示例
 

int i = 0;
do {
    cout << i << " ";
    i++;
} while (i < 5);


输出结果:

0 1 2 3 4

4.练习

使用do-while循环输出1到10的奇数:

方法一思路:

1.循环从一到十

2.判断i(循环变量)是否是奇数。

3.如果是,则输出i

提示:

判断奇偶数的方法:

1.偶数:

​
if(i%2==0)//是偶数
{
    cout<<i<<endl;//输出i并换行
}

​

2.奇数

if(i%2==1)//奇数
{
    cout<<i<<endl;//输出i并换行
}

方法一代码:

​
int i=1;
do
{
    if(i%2==1)
    {
        cout<<i<<endl;
    }
    i++;
}while(i<=10);

​

方法二思路:

要求我们输出10以内的奇数,我们知道,技术是从1开始,每两个增加,我们可以让i每次递增2即可。

方法二代码:

int i = 1;
do {
    cout << i << " ";
    i += 2;
} while (i <= 10);

3.for循环

for循环在循环开始前初始化一个循环变量,然后检查循环条件,在每次循环迭代后更新循环变量。

1.语法形式

for (初始化; 循环条件; 循环迭代) {
    // 循环体
}

2.执行流程

1. 执行初始化部分。
2. 检查循环条件,如果为真,则执行循环体中的代码。
3. 执行循环迭代部分,更新循环变量。
4. 再次检查循环条件,如果为真,则继续执行循环体和循环迭代,直到条件为假才停止循环。

3.代码示例
 

for (int i = 0; i < 5; i++) {
    cout << i << " ";
}


输出结果:

0 1 2 3 4

4.练习

1.使用for循环打印九九乘法表。

这里,我们需要了解多重循环的概念:

4.多重循环

多重循环是指嵌套多个循环的情况,包括双重循环、三重循环、甚至更多层的嵌套循环。多重循环的目的是实现多层次的重复执行某种操作,可以用来处理多维数组、矩阵等复杂的数据结构,或者解决一些需要多个变量同时控制的问题。

多重循环的语法形式如下:

for (初始化表达式1; 循环条件1; 更新表达式1) {
    for (初始化表达式2; 循环条件2; 更新表达式2) {
        // 内层循环体代码
        for (初始化表达式3; 循环条件3; 更新表达式3) {
            // 更内层循环体代码
            // ...
        }
    }
    // 外层循环体代码
    // ...
}


执行流程与双重循环类似,只不过多重循环会依次执行每一个嵌套的循环。每个循环中的初始化表达式、循环条件和更新表达式都会被执行和判断,只有当所有的循环条件都为真时,内层循环才会执行完毕后再执行外层循环。

使用多重循环时需要注意以下几点:
- 在设计嵌套循环时要确保循环的次序和逻辑是正确的,以避免死循环或跳过某些重要的迭代。
- 循环变量的命名应该具有描述性,以便于理解和维护。
- 在嵌套循环中使用break语句可以在满足某些条件时提前跳出内层循环。
- 嵌套循环的嵌套层数不宜过多,否则会导致代码的可读性变差和执行效率下降。

多重循环的用途广泛,可以用来处理复杂的问题,但在使用时要谨慎考虑,确保循环逻辑正确且不会导致性能问题。

接下来,我们可以写出九九乘法表了:

  1. 外层循环控制乘法表的行数,变量i表示当前行数。
  2. 内层循环控制每行中的数字,变量j表示当前数字。
  3. 内层循环的循环条件是j<=i,即每行中的数字不大于当前行数。
  4. 输出语句使用cout来打印每个数字的格式,“j * i = i * j”表示当前数字的乘法表达式,其中i和j分别表示行和列,i*j表示乘积。
  5. 在内层循环执行完毕后,通过cout << endl;换行,开始下一行的打印。

逻辑:先打印第一行的乘法表,然后换行打印第二行的乘法表,以此类推,直到打印第九行的乘法表。每行中的数字不大于当前行数,因此内层循环的循环条件是j<=i。

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

2.百钱买百鸡

题目:某人有100元钱,要买100只鸡,公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只,问可买到的公鸡,母鸡,小鸡各为多少只,请把所有的可能性打印出来。

方法一思路:
1. 题目要求用100元买100只鸡,其中公鸡价格为5元,母鸡价格为3元,小鸡价格为1/3元。
2. 可以使用三层循环遍历所有可能的买鸡方案,找出满足条件的解。

方法一代码:

 

​
​
#include <iostream>
using namespace std;

int main() {
    for (int x = 0; x <= 20; x++) {
        for (int y = 0; y <= 33; y++) {
            for(int z=0;z<=300;z++){
            if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0&& z + x +y == 100) {
                cout << "公鸡数量:" << x << ' ';
                cout << "母鸡数量:" << y << ' ';
                cout << "小鸡数量:" << z << ' ';
                }
            }
        }
    }

    return 0;
}

​

​

方法二思路:
1. 根据题目要求,鸡的数量之和为100,价格之和为100元,将该问题转化为一个数学问题。
2. 对公鸡数量进行遍历,确定公鸡的数量后,可根据母鸡和小鸡的数量计算出价格是否满足条件。
3. 在循环过程中,可以通过一次性计算出当前公鸡数量所能购买的母鸡和小鸡数量,避免内层循环。

在这里,我们只需要用两层循环即可解决问题。

方法二代码:
 

#include <iostream>
using namespace std;

int main() 
{    
    int x, y, z;
    for (x = 0; x <= 100; x++) {
        for (y = 0; y <= 100; y++) {
            z = 100 - x - y;
            if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {
                cout << "公鸡:" << x << "只,母鸡:" << y << "只,小鸡:" << z << "只" << endl;
            }
        }
    }
    return 0;
}

5.三种循环对比

while循环:

  • while循环是先判断条件是否满足,满足则执行循环体,然后再判断条件是否满足,满足则再次执行循环体,依次循环下去,直到条件不满足时跳出循环。
  • while循环适合在不确定循环次数的情况下使用,因为循环次数取决于条件是否满足。

do while循环:

  • do while循环先执行一次循环体,然后再判断条件是否满足,满足则继续执行循环体,依次循环下去,直到条件不满足时跳出循环。
  • do while循环至少会执行一次循环体,适合在需要确保循环体执行至少一次的情况下使用。

for循环:

  • for循环在初始化循环变量、判断条件是否满足、更新循环变量这三个步骤上相对较为简洁。
  • for循环适合在循环次数已知的情况下使用,因为循环次数由初始化和更新循环变量的表达式决定。

附:循环流程图

上面我们用文字讲了一下循环流程,下面我们来用图片再来明示一下。

当然,如果有continue或break语句(下面我们要讲的),那循环会在一定条件下跳出或直接不执行。

6.跳出循环

如果要跳出循环,我们可以使用continue和break语句来跳出循环。

1.continue语句

continue语句可以跳出本次循环,但不能停止循环运行。

1.语法形式

for(i=1;i<=n;i++)
{
  if(i==2)
  {
      continue;
  }
}

上述代码会在i=2是跳出循环,继续往后执行。

2.练习

当用户输入一个数字n时,编写一个程序,使用`continue`语句计算从1到n之间所有奇数的平方和。

示例输入:
 

6

示例输出:
 

孤单奇数平方和: 35

分析具体步骤:

1.首先,从用户输入中获取一个整数n。

2.定义一个变量sum,用于存储奇数的平方和,初始值为0。

3.使用for循环,从1开始,循环到n。

4.在循环中,使用if语句判断当前的循环变量i是否为偶数。

5.如果i是偶数,则使用continue语句跳过本轮循环,直接进入下一轮循环。

6.如果i是奇数,则将i的平方加到sum中。

7.循环结束后,输出sum的值,即孤单奇数的平方和。

8.程序结束。

代码如下:
 


#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        if (i % 2 == 0) {
            continue; // 跳过偶数,继续下一轮循环
        }
        sum += i * i;
    }
    cout << "孤单奇数平方和: " << sum << endl;
    return 0;    
}


运行该程序时,用户输入一个数字n,程序将计算从1到n之间所有奇数的平方和,使用`continue`语句跳过偶数,最后输出结果。

2.break语句

break语句会结束整个循环执行。

1.语法形式

for(i=1;i<=n;i++)
{
    if(i==2)
    {
        break;
    }
}

上述代码会在i=2时停止循环执行。

2.练习

当用户输入一个整数n时,找出从1开始的连续整数序列的和,直到和大于等于n,然后输出连续整数序列的个数。

分析具体步骤:
1. 提示用户输入一个整数n。
2. 定义变量sum并初始化为0,用于存储当前连续整数序列的和。
3. 定义变量count并初始化为0,用于计算连续整数序列的个数。
4. 使用while循环,条件为sum小于n。
5. 在循环中,将count加1,表示找到了一个新的连续整数序列。
6. 将当前的count加到sum中。
7. 如果sum大于等于n,则使用break语句跳出循环。
8. 输出count的值,即连续整数序列的个数。

下面具体代码:

​
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int sum = 0;
    int count = 0;

    while (sum < n) {
        count++;
        sum += count;
        if (sum >= n) {
            break;
        }
    }

    cout << "连续整数序列的个数为: " << count << endl;

    return 0;
}

​

通过使用break语句来跳出循环,我们在找到满足条件的连续整数序列后,不再继续执行循环,提高了程序的效率。

7.循环的用处

循环结构在编程中有着广泛的应用。它们可以用来遍历数组或容器中的元素,处理大量的数据,或者根据特定的条件重复执行某些操作。

循环还可以用于处理用户输入、文件操作和网络通信等情况。通过循环,我们可以轻松地处理这些任务,减少代码的重复性,提高代码的效率和可读性。

8.总结

循环结构是C++编程中不可或缺的一部分。它们能够简化重复的代码,提高代码的可读性和可维护性。通过使用不同类型的循环结构,如do-while、for、while,我们可以根据不同的需求选择合适的循环方式。

在编程过程中,我们要注意循环条件的设置,避免出现无限循环的情况。同时,合理使用循环可以帮助我们处理大量的数据和重复的任务,提高程序的效率和性能。

无论是初学者还是有经验的开发者,掌握循环结构都是非常重要的。通过不断练习和实践,我们能够更加熟练地应用循环,提高自己的编程能力。

本篇博客到这里就结束了,感谢大家的支持与观看,如果有好的建议欢迎留言,谢谢大家啦!

  • 32
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值