专业编程基础技术教程

网站首页 > 基础教程 正文

C++笔记:程序流程结构 c++程序流程图

ccvgpt 2024-11-11 11:20:45 基础教程 8 ℃

4.1 选择结构

4.1.1 if语句

单行if

 int n = 0;
 cout << "Enter n :";
 cin >> n;
 if (n > 10)
 {
     cout << "n is bigger than 10" << endl;
 }
 return 0;

if后不加分号,不然没有选择作用

C++笔记:程序流程结构 c++程序流程图

注意:如果if里面执行的语句只有一行,那么可以省略花括号,如果多于一行,必须加花括号,否则只会执行第一行

比如:

 int n = 0;
 cout << "Enter n :";
 cin >> n;
 if (n > 10)
     cout << "n is bigger than 10" << endl;
 cout << "n比10大" << endl;

无论输入n是什么数,n比10大这行代码都会被执行,因为这句代码不在if里面

  • 多行if
 int n = 0;
 cout << "Enter n :";
 cin >> n;
 if (n > 10)
 {
     cout << "n is bigger than 10" << endl;
 }
 else
 {
     cout << "n is NOT bigger than 10" << endl;
 }
 return 0;

if语句的条件不满足就走else语句

  • 多条件if语句
 int n = 0;
 cout << "Enter n :";
 cin >> n;
 if (n > 10)
 {
     cout << "n is bigger than 10" << endl;
 }
 else if (n > 5)
 {
     cout << "n is bigger than 5 and smaller than 10" << endl;
 }
 else if (n > 0)
 {
     cout << "n is bigger than 0 and smaller than 5" << endl;
 }
 else
 {
     cout << "n < 0" << endl;
 }
 return 0;

可以有if ... else if。即后面的else没有也可以

嵌套if语句---在一个范围内更精确的选择

 int n = 0;
 cout << "Enter n :";
 cin >> n;
 if (n > 100)//在n > 100的访问内进行筛选
 {
     if (n > 200)
     {
         cout << "n > 200" << endl;
     }
     else if (n > 150)
     {
         cout << "n > 150" << endl;
     }
     else
     {
         cout << "n > 100 && n <= 150" << endl;
     }
 }
 else if (n > 50)
 {
     cout << "n <= 100 && n > 50" << endl;
 }
 else
 {
     cout << "n <= 50" << endl;
 }

在第一个if下在进行选择

如果一个判断可以写成并列的两个if,也可以写成if ... else if。如果不复杂的话就用后者,因为后者的执行效率高

4.1.2 三目运算符

语法:表达式1 ? 表达式2 : 表达式3

解释:如果表达式1的值为真,执行表达式2,并返回表达式2的结果;

如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

     int a = 10;
     int b = 20;
     int c;
     c = (a > b ? a : b);
     cout << "c=" << c << endl;

结果是c = 20

就是把a,b中较大的值赋给c,然后打印c

     int a = 10;
     int b = 20;
     (a > b ? a : b) = 100;
     cout << "a=" << a << endl;
     cout << "b=" << b << endl;

结果是a=10,b=100 (先判断a,b大小,再把其中一个赋值100并打印)

4.1.3 switch语句

基本结构

 switch(表达式)
 {
 case 结果一 :
 执行语句;
 break;
 case 结果二 :
 case 结果三 :
 执行语句;
 break;
 default 
 执行语句;
 break;
 
 }

每一行代码下都要加break;不然会一直运行下去

e.g.

 int n;
 cin >> n;
 switch (n)
 {
 case 10:
 case 9:
     cout << "n == 9 || n == 10" << endl;
     break;
 default:
     cout << "n != 9 && n != 10" << endl;
     break;
 }

if 与 switch 的区别? switch缺点:判断分支事只能是整型或者字符型 不可以是一个区间 switch优点:结构清晰,执行效率高

4.2 循环语句

4.2.1 while循环语句

满足循环条件(只要循环条件结果为真),执行循环语句

 int a = 0;
     while (a <= 9)
     {
         cout << a << endl;
         a++;
     }

输出结果为0-9

4.2.2 do...while循环语句

与while的区别是先执行依次循环语句,再判断循环条件

 do
 {
    statement(s);
 
 }while( condition );
 

4.2.3 for循环语句

for(起始表达式;条件表达式;末尾循环体){循环语句;}

起始表达式:不参加循环,用于给变量赋值,创建一个变量的声明等;

末尾循环体:第一次循环结束后的操作,然后再判断循环条件

 #include<iostream>
 using namespace std;
 int main()
 {
     for (int i = 0; i < 10; i++)
     {
         cout << i << endl;
     }
     return 0;
 }
 #include<iostream>
 using namespace std;
 int main()
 {
 int i = 0;
 for ( ; ; )
 {
     if(i >= 10)
     {
         break;
     }
 cout << i << endl;
 i++;
 }
 return 0;
 }

其实这段代码和上面的一样,只要for循环语句的基本结构还在就行,里面的东西可以放外面

4.2.4 嵌套循环

在循环体中再嵌套一些循环,解决一些实际问题

 #include<iostream>
 using namespace std;
 int main()
 {
     //外侧循环
     for (int a = 1; a <= 10; a++)
     {
         //内层循环
         for (int i = 1; i <= 10; i++)
         {
             cout << "* ";
         }
         cout << endl;
     }
     return 0;
 }

外层循环一次,内层循环一周--天上一天,人间一年

两层循环最好不要用一样的变量

运行结果:



可以一直循环下去

 #include<iostream>
 using namespace std;
 int main()
 {
     for (int j = 1; j <= 10; j++)
     {
         for (int a = 1; a <= 10; a++)
         {
             for (int i = 1; i <= 10; i++)
             {
                 cout << "* ";
             }
             cout << endl;
         }
         cout << endl;
     }
     return 0;
 }

这就是三维的了

运行结果如下



4.3 跳转语句

4.3.1 break语句

用于跳出选择或者循环结构

使用时机:

  • 出现在switch条件语句中,终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句

示例1

 #include<iostream>
 using namespace std;
 int main()
 {
 
     cout << "请选择副本难度" << endl;
     cout << "1.普通" << endl;
     cout << "2.中等" << endl;
     cout << "3.困难" << endl;
     int i = 0;//创建选择结果的变量
     cin >> i;
     switch (i)
     {
     case 1:
         cout << "普通" << endl;
         break;
     case 2:
         cout << "中等" << endl;
         break;
     case 3:
         cout << "困难" << endl;
         break;
     }
     return 0;
 }

示例2

 #include<iostream>
 using namespace std;
 int main()
 {
     for (int i = 0; i < 10; i++)
     {
         if (i == 5)
         {
             break;//等于5退出循环
         }
         cout << i << endl;
     }
     return 0;
 }

示例3

 #include<iostream>
 using namespace std;
 int main()
 {
     for (int i = 0; i < 10; i++)
     {
         for (int j = 0; j < 10; j++)
         {
             if (j == 5)
             {
                 break;//退出内层循环
             }
             cout << "* ";
         }
         cout << endl;
     }
     return 0;
 }

结果:



利用break退出内层循环,不影响外层循环

4.3.2 continue语句

在循环语句中,终止本次循环中余下的语句

开始下一次循环

 #include<iostream>
 using namespace std;
 int main()
 {
     for (int i = 0; i <= 100; i++)
     {
         //如果是奇数输出,偶数不输出
         if (i % 2 == 0)//偶数特征
         {
             continue;
         }
         cout << i << endl;
     
     }
     return 0;
 }

输出结果为1-100中全部的奇数

如果把continue换成break,则什么都不会输出

4.3.3 goto语句

无条件跳转语句

语法:goto 标记;(标记一般大写)FLAG

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记位置

 #include<iostream>
 using namespace std;
 int main()
 {
     cout << "1.xxx" << endl;
     cout << "2.xxx" << endl;
     goto FLAG;
     cout << "3.xxx" << endl;
     cout << "4.xxx" << endl; 
     FLAG:   //注意是冒号,此处为标记点
     cout << "5.xxx" << endl;
 
 
     return 0;
 }

输出结果



相当于使用了传送,从goto 直接到标记点

标记点在if里面可能很好用

不推荐用,因为会破坏结构

所有的goto语句都可以被替换成无goto的语句,只不过麻烦些

换言之:goto语句在C++是非必须的

 #include<iostream>
 using namespace std;
 int main()
 {
     int i;
     FLAG:
     cin >> i;
     if (i >= 10)
     {
         goto FLAG;
     }
     cout << i << endl;
     return 0;
 }

这个只能输出小于10的数,可以用if语句替代

Tags:

最近发表
标签列表