C++ 循环

怼烎@ 2023-10-12 22:43 86阅读 0赞

C++ 循环

有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了允许更为复杂的执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

9c0a7b8e526f401ffc4db0211fe66de6.png

循环类型

C++ 编程语言提供了以下几种循环类型。点击链接查看每个类型的细节。
























循环类型 描述
while 循环 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
for 循环 多次执行一个语句序列,简化管理循环变量的代码。
do…while 循环 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
嵌套循环 您可以在 while、for 或 do..while 循环内使用一个或多个循环。

循环控制语句

循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

C++ 提供了下列的控制语句。点击链接查看每个语句的细节。




















控制语句 描述
break 语句 终止 loopswitch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。
continue 语句 引起循环跳过主体的剩余部分,立即重新开始测试条件。
goto 语句 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。

实例

#include using namespace std; int main () { for( ; ; ) { printf(“This loop will run forever.\n”); } return 0; }

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。

注意:您可以按 Ctrl + C 键终止一个无限循环。

笔记

  1. 以下实例使用嵌套 for 循环来输出菱形:

    1. #include <iostream>
    2. #include <math.h>
    3. #include <vector>
    4. #include <algorithm>
    5. using namespace std;
    6. int main()
    7. {
    8. //外层循环控制行、换行
    9. //内层循环控制列、列的图形
    10. //中分的三角菱形
    11. //定义半菱形高度,即定义了菱形的大小
    12. int n ;
    13. cout<<"请输入半菱形高度"<<endl;
    14. cin >> n;
    15. //上半部分居中正三角n行
    16. for (int i = 0; i < n; i++)
    17. {
    18. for (int j = 0; j < n - i -1; j++)
    19. {
    20. cout<<" ";
    21. }
    22. for (int j = 0; j <= 2 * i; j++)
    23. {
    24. //每行第一个和最后一个外打印星号,其余打印空格,做成空心效果,下半部分相同
    25. if (j == 0 or j == 2 * i)
    26. cout<<"*";
    27. else
    28. cout<<" ";
    29. }
    30. cout<<endl;
    31. }
    32. //下半部分居中倒三角n-1行
    33. for (int i = 0; i < n - 1; i++)
    34. {
    35. for (int j = 0; j <= i; j++)
    36. {
    37. cout<<" ";
    38. }
    39. for (int j = 0; j <= 2 * ( n - i - 2 ); j++)
    40. {
    41. if (j == 0 or j == 2 * ( n - i - 2 ))
    42. cout<<"*";
    43. else
    44. cout<<" ";
    45. }
    46. cout<<endl;
    47. }
    48. return 0;
    49. }

    测试输出结果:

    1. 请输入半菱形高度
    2. 5
    3. *
    4. * *
    5. * *
    6. * *
    7. * *
    8. * *
    9. * *
    10. * *
    11. *
  2. 利用循环输出乘法口诀:

    1. #include<iostream>
    2. #include <iomanip>
    3. using namespace std;
    4. int main()
    5. {
    6. int i, j;
    7. for (i = 1; i < 10; i++){
    8. for (j = 1; j <= i; j++){
    9. cout << j << " × " << i << " = " << setw(2)<<i *j << " ";
    10. }
    11. cout << endl<<endl;
    12. }
    13. }
  3. 楼上的输出菱形方法太麻烦了,请直接来这个:

    1. #include <iostream>
    2. #include <math.h>
    3. using namespace std;
    4. int main() {
    5. cout << "请输入半菱形高度n" << endl;
    6. int n = 0;
    7. cin >> n;
    8. for (int i = 0; i < 2 * n + 1; i++) {
    9. for (int j = 0; j < 2 * n + 1; j++) {
    10. if (abs(i - n) + abs(j - n) == n) {
    11. cout << "*";
    12. } else {
    13. cout << " ";
    14. }
    15. }
    16. cout << endl;
    17. }
    18. }
  4. include

    include

    using namespace std;

    int main()
    {

    1. cout << "请输入半菱形高度n" << endl;
    2. int n = 0;
    3. cin >> n;
    4. for (int i = 0; i < 2 * n; i++)
    5. {
    6. for (int j = 0; j < 2 * n; j++)
    7. {
    8. if (abs(i - n) + abs(j - n) == n - 1) //输出星号时满足的规律
    9. {
    10. cout << "*";
    11. }
    12. else
    13. {
    14. cout << " ";
    15. }
    16. }
    17. cout << endl;
    18. }
    19. return 0;

    }

  5. 楼上的方法虽然更简便,但是会多输出空白的行和列,所以我在楼上的代码上稍作修改,现在的代码我觉得更符合题意。

    1. #include<iostream>
    2. using namespace std;
    3. //利用for循环输出菱形
    4. int main()
    5. {
    6. cout << "请输入半菱形高度n" << endl;
    7. int n = 0;
    8. cin >> n;
    9. for (int i = 1; i < 2 * n; i++)
    10. {
    11. for (int j = 1; j < 2 * n; j++)
    12. {
    13. if (abs(i - n) + abs(j - n) == n - 1) //输出星号时满足的规律
    14. {
    15. cout << "*";
    16. }
    17. else
    18. {
    19. cout << " ";
    20. }
    21. }
    22. cout << endl;
    23. }
    24. return 0;
    25. }
  6. 这算法让我膜拜:

    1. if (abs(i - n) + abs(j - n) == n - 1)

    交个作业吧:

    1. #include <iostream>
    2. #include <iomanip>
    3. using namespace std;
    4. int main()
    5. { cout << "请输入半菱形高度n" << endl;
    6. int n=10,i=1;
    7. cin >> n;
    8. cout<<setw(n)<<"*"<<endl;
    9. for (;i<n;++i)
    10. cout <<setw(n-i)<<"*"<<setw(2*i)<<"*"<< endl;
    11. i=i-2;
    12. while (i>0)
    13. {
    14. cout <<setw(n-i)<<"*"<<setw(2*i)<<"*"<< endl;
    15. i--;
    16. }
    17. cout<<setw(n)<<"*"<<"\t\t"<<endl;
    18. return 0;
    19. }

发表评论

表情:
评论列表 (有 0 条评论,86人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++ 循环

    C++ 循环 有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了允许更为复杂的执

    相关 c#-循环

    前言   对于一些事件,我们判断一次并不能得出我们想要的结果,那么怎么办呢?由此我们引出了循环这一功能。那循环一共有几种,这个您了解吗?想要更了解的就往下看吧! Wh