zoukankan      html  css  js  c++  java
  • 程序流程结构

    C++三种最基本的程序运行结构:顺序结构、选择结构、循环结构

    一、选择结构

    1.  if 语句

    (1)单行格式 if 语句:if (条件) {条件满足执行的语句}

    (2)多行格式 if 语句:if (条件) {条件满足执行的语句}  else{条件不满足执行的语句}

    (3)多条件的 if 语句:if(条件1){条件1满足执行的语句} else if(语句2){条件2满足执行的语句} ......else{都不满足的执行语句}

     1 #include <iostream>
     2  using namespace std;
     3   
     4  int main()
     5   {
     6       //选择结构 单行 if 语句
     7       //用户输入分数,如果分数大于600,考上一本大学,在屏幕上输出
     8       //大于500,考上二本大学,屏幕输出
     9       //大于300,考上三本大学,屏幕输出
    10       //小于等于300,未考上大学
    11       //1.用户输入分数
    12       float a=0;
    13       cout << "请输入你的分数:" << endl;
    14       cin >> a ;
    15      
    16       //2.打印用户输入的分数
    17       cout << "您输入分数为" << a <<endl;
    18     
    19       //3.判断分数,如果分数大于600,考上一本大学,在屏幕上输出
    20       if (a>600)
    21          cout <<"恭喜考上一本" << endl;
    22      else if (a>500)
    23          cout <<"恭喜考上二本" << endl;
    24      else if (a>300)
    25          cout <<"恭喜考上三本" << endl;
    26      else
    27         cout<<"很遗憾"<<endl; 
    28     
    29       system("pause");
    30       return 031  }    
    if 语句实现是否考上大学

    (4)嵌套 if 语句

     1 #include <iostream>
     2  using namespace std;
     3   
     4  int main()
     5   {
     6       //选择结构 单行 if 语句
     7       //用户输入分数,如果分数大于600,考上一本大学,在屏幕上输出,
     8       //在一本分数中,分数>700清华大学;分数>650人大;分数>600同济大学;
     9       //大于500,考上二本大学,屏幕输出
    10       //大于300,考上三本大学,屏幕输出
    11       //小于等于300,未考上大学
    12       //1.用户输入分数
    13       float a=0;
    14       cout << "请输入你的分数:" << endl;
    15       cin >> a ;
    16      
    17       //2.打印用户输入的分数
    18       cout << "您输入分数为" << a <<endl;
    19     
    20       //3.判断分数,如果分数大于600,考上一本大学,在屏幕上输出
    21       if (a>600)
    22     {
    23         cout <<"恭喜考上一本" << endl;
    24        if (a>700)
    25             cout<<"恭喜考入清华"<<endl;
    26        if (a>650)
    27             cout<<"恭喜考入人大"<<endl;
    28        if (a>600)
    29             cout<<"恭喜考入同济"<<endl;
    30     }
    31          
    32      else if (a>500)
    33          cout <<"恭喜考上二本" << endl;
    34      else if (a>300)
    35          cout <<"恭喜考上三本" << endl;
    36      else
    37         cout<<"很遗憾"<<endl; 
    38     
    39       system("pause");
    40       return 041  }        
    嵌套 if 语句

    (5)三目运算符:通过三目运算符实现简单判断

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

    #include <iostream>
    using namesspace std;
    
    int main()
    {
        //三目运算符
        
        //创建三个变量a,将a与b作比较,将变量大的值赋给变量c
        int a=10,b=20,c=0;
        
        c=(a > b ? a : b);
        cout <<"c=" << c <<endl;
    
        //在c++中三目运算符返回的是变量,可以继续赋值
         (a > b ? a : b)= 100;
        cout <<"a=" << a <<endl;
        cout <<"b=" << b <<endl;
    
        system ("pause");
        return 0;
    }    
    
    三目运算符
    三目运算符

    注:在c++中三目运算符返回的是变量,可以继续赋值

    2.  switch语句

    语法:

    switch (表达式)
    {
    
        case 结果1:执行语句;breakcase 结果2:执行语句;break;
        ……
        default:执行语句;break;
    
    }    

    注:

    • break只表示向外跳出一层

    • switch里面不一定每一个case都要对应break,也不是整个switch的执行与一定要有break,仅作说明

    • 不一定需要default,所有case都不符合也可以顺序执行

    #include <iostream>
    using namespace std ;
    
    int main()
    {
        //给电影打分;10~9经典;8~7非常好;6~5一般;5分以下烂片。
    
        //1.提示用户打分
        cout <<"请给电影打分" <<endl;
    
        //2.用户开始打分
        int score;
        cin >> score;
        cout <<"您给电影打分" << score <<endl;
    
        //3.根据用户输入的分数来提示用户最后的结果;
        swich (score)
        {
            case 10:
                    cout << "经典电影" <<endl;break; //退出当前分支
            case 9:
                    cout << "经典电影" <<endl;break;
            case 8:
                    cout << "非常好" <<endl;break;
            case 7:
                    cout << "非常好" <<endl;break;
            case 6:
                    cout << "一般" <<endl;break;
            case 5:
                    cout << "一般" <<endl;break;
            default:
                     cout << "烂片" <<endl;break;
    
        }
    
        system("pause"):
        return 0;
    }
    
    switch小例子
    switch小例子

    小结:

    if 与 switch的区别:

    (1)switch 缺点:判断时候只能是整型或字符型,不可以是一个区间

    (2)switch优点:结构清晰,执行效率高

    (3)case里如果没有break,那么程序会一直向下执行

    二、循环结构

    1.  while循环语句

    语法:while(循环条件)(循环语句)

    ps:只要条件为真,就执行循环语句

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int num=0;
    
        //避免死循环   
        while (num < 10)
        {
            cout << num <<endl;
            num++;
        }
        system("pause");
        return 0;
    }    
    while打印

    注:在执行循环语句的时候,程序必须提供跳出循环的出口,否则出现死循环

    小案例:猜数字

    #include <iostream>
    using namespace std;
    #include <ctime>   //time系统时间头文件
    
    int main()
    {
        //添加随机数种子:利用当前系统时间生成随机数,防止每次随机数都一样
        srand((unsigned int) time (NULL));
    
        //1.系统生成随机数
        int num=rand()%100 +1;    // rand()%100生成0~99的随机数,rand不是伪随机数
        //cout << num <<endl;
    
        //2.玩家进行猜测
        int val =0;
      
        
        //3.判断玩家猜测
        while(1)
        {
            cin >> val;
            if(num>val)
                {
                    cout << "猜小了"<<endl;
                }
            else if(num<val)
                {
                    cout << "猜大了"<<endl;
                }   
            else
                {
                    cout << "恭喜猜对了"<<endl;
                    break;   //break,可以利用该关键字来退出当前循环
                }    
        }
    
        system("pause");
        return 0;
    }       
    
    while猜数字
    while猜数字

    2.  do ... while循环语句

    语法:do{循环语句} while{循环条件};

    注:与while的区别在于do...while会先执行一次循环语句,再判断循环条件

    #include <iostream>
    using namespace std;
    
    int main()
    {
        //在屏幕中输出0到9
        
        int num=0;
        do
        {
            cout << num <<endl;
            num++;
        }
        while (num < 10);
         //do...while先执行一次;
    
        system("pause");
        return 0;
    }
    do...while

    案例:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它自己本身.请用 do...while 写出代码。

    例如:1^3+5^3+3^3=153

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout << "输出三位数字的水仙花数" << endl;
        int num = 100;
        do
        {     //获取个位数
               int a=num %10; 
               //获取十位数
               int b=num /10 %10;
                //获取百位数
                int c=num/100;
                if (a*a*a+b*b*b+c*c*c == num)
                    {
                        cout << num<<endl;
                    }
                num++;
        }
        while (num<1000);
        system ("pause");
        return 0;
    }
    水仙花

    3.  for循环语句

    语法:for(起始表达式;条件表达式;模为循环体) {循环语句};

    注:起始表达式只执行一次

    案例:敲桌子;

    案例描述:从1开始数到数字100,如果数字个数含有7,或数字十位含有7,或者数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

    #include <iostream>
    using namespace std;
    
    int main()
    {
        for (int i=1;i<=100;i++)
        {
            if ( i %7== 0 || i%10==7 || i/10==7)  //特殊数字
            {
                cout << "敲桌子" << endl;
            }
            else 
            {
                cout << i <<endl;
            }
        }
        system("pause");
        return 0;
    }
    敲桌子

    3.1  嵌套循环

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

    注:当外层循环与内层循环的变量一致时,输出变量采用就近原则方式输出

    案例:乘法口诀表

    #include <iostream>
    using namespace std;
    
    int main()
    {
        for (int i=1;i<=9;i++)
        {
            for (int j=1;j<=i;j++)
            {
                cout << j << "*"<< i << "="<< i*j <<"  ";
            }
             cout <<endl;      
        }
        system ("pause");
        return 0;
    }
    乘法口诀表

    3.2  跳转语句

    3.2.1  break语句用于跳出选择结构或者循环结构

    break使用的时机

    • 出现在switch条件语句中,作用是终止并跳出switch

    • 出现在循环语句中,作用是跳出当前的循环语句

    • 出现在嵌套循环中,跳出最近的内层循环语句

    #include <iostream>
    using namespace std;
    
    int main()
    {
        //1.出现在switch语句中
        cout << "请选择副本难度" << endl;
        cout << "1.普通" << endl;
        cout << "2.中等" << endl;
        cout << "3.困难" << endl;
        
        int select =0; //创建选择结果变量
    
        cin >> select;
        switch(select)
        {
         case 1:
                cout << "您选择的是普通难度" << endl;breakcase 2:
                cout << "您选择的是中等难度" << endl;breakcase 3:
                cout << "您选择的是困难难度" << endl;breakdefaultbreak;
        }
    
    
        //出现在循环语句中
        for (int i=0;i<10;i++)
        {
            //如果等于5,退出循环;
            if (i==5)
                break;
            cout << i<<endl ;
        }
    
    
        //出现在嵌套循环中
        for (int m=0;m<10;m++)
        {
            for (int n=0;n<10;n++)
            {
                if (n==5)
                    break;  //退出内层循环,不影响外层循环
                cout << "*" ;
            }
            cout <<endl;
        }
    
        system ("pause");
        return 0;
    }
    break语句

    3.2.2  continue 语句:跳本次循环中余下尚未执行的语句,继续执行下一次循环。

    小例子:输出奇数

    #include <iostream>
    using namespace std;
    
    int main()
    {
        //continue 语句
        for (int i=0;i<=100;i++)
        {
            //如果奇数就输出
            if(i % 2 ==0)
            {
                continue; //可以筛选条件,执行到次不再执行,执行下一次循环;
                //break会退出循环,而continue不会
            }
            cout << i<<endl;
        }
        system ("pause");
        return 0;
    }
    输出奇数

    3.2.3  goto 语句:无条件跳转语句

    语法:goto 标记;

    解释:如果标记的名称存在,执行到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;
        system ("pause");
        return 0;
    }

    注:在程序中不建议使用goto语句,以免造成程序流程混乱。

    哪有什么胜利可言,坚持意味着一切
  • 相关阅读:
    博客园 投放 谷歌广告(google adsense) 且不被屏蔽掉
    JAVA与C#程序调用DOS命令
    redhat 5 安装apache 2.2
    解决"Windows 安装程序不允许从远程桌面连接安装"
    测试使用windows live writer的adsense coder发布文章
    解决:apache 整合redmine 启动报错 mod_passenger.so: failed to map segment from shared object: Permission denied
    企业级安全服务权限控制 Acegi安装系统介绍 Spring Framework安全系统
    解决Rails升级问题
    解决MyEclipse 7开发EXTJS 每次保存都要编译js的导致开发效率很低的问题
    解决:redmine 安装 rake db:migrate encoding: utf8
  • 原文地址:https://www.cnblogs.com/BY1314/p/12578332.html
Copyright © 2011-2022 走看看