C++流程控制语句

引言

4.1 选择结构

4.1.1 if语句 

作用:执行满足条件的语句
if 语句的三种形式
单行格式if语句
 

#include <iostream>
using namespace std;
int main()
{
    //选择结构if语句
    //用户输入分数,如果分数大于600分,则考上一本大学,在屏幕上输出

    // 1.用户输入分数

    int score;
    cout << "请输入你的分数= " ; // 不写endl 代表不换行
    cin >> score;

    // 2.打印用户输入的分数
    cout << "你输入的分数为" << score << endl;

    // 3.判断你输入的分数是否大于600
    if(score >600){
        cout << "恭喜你考上了一本大学" << endl;
    }
    return 0;
}

多行格式if语句
 

#include <iostream>
using namespace std;
int main()
{
    //选择结构 - 多行if语句
    //用户输入分数,如果分数大于600分,则考上一本大学,在屏幕上输出,否则输出,没有考上一本大学

    // 1.用户输入分数

    int score;
    cout << "请输入你的分数= " ; // 不写endl 代表不换行
    cin >> score;

    // 2.打印用户输入的分数
    cout << "你输入的分数为" << score << endl;

    // 3.判断你输入的分数是否大于600
    if(score >600)
    {
        cout << "恭喜你考上了一本大学" << endl;
    }else
    {
        cout << "没有考上一本大学" << endl;
    }
    return 0;
}

多条件的if语句
 

#include <iostream>
using namespace std;
int main()
{
    //选择结构 - 多条件if语句
    //用户输入分数,如果分数大于600分,则考上一本大学,
    // 分数大于500分,考上二本大学
    // 分数大于400分,考上三本大学
    // 分数小于等于400分,未考上本科。

    // 1.用户输入分数
    int score;
    cout << "请输入你的分数= " ; // 不写endl 代表不换行
    cin >> score;

    // 2.打印用户输入的分数
    cout << "你输入的分数为" << score << endl;

    // 3.判断你输入的分数是否大于600
    if(score >600)
    {
        cout << "恭喜你考上了一本大学" << endl;
    }
    else if(score>500)
    {

        cout << "恭喜你考上了二本大学" << endl;
    }
    else if(score>400)
    {
        cout << "恭喜你考上了三本大学" << endl;

    }
    else
    {
        cout << "没考上本科"  << endl;
    }

    return 0;
}

嵌套if语句

在if语句中,可以嵌套if语句,达到更精准的判断
案例需求:
 提示用户输入一个分数,根据分数做判断
分数大于600分,则考上一本大学,分数大于500分,考上二本大学,分数大于400分,考上三本大学,都不满足,没考上本科
在一本分数中,如果分数大于700分,考入北大,大于650分,考入清华
 

#include <iostream>
using namespace std;
int main()
{
    //嵌套if 语句
    // 1.用户输入分数
    int score;
    cout << "请输入你的分数= " ; // 不写endl 代表不换行
            cin >> score;

    // 2.打印用户输入的分数
    cout << "你输入的分数为" << score << endl;

        // 3.判断你输入的分数是否大于600
    if(score >600)
    {
        cout << "恭喜你考上了一本大学" << endl;
        if (score>700)
        {
            cout << "恭喜你考入了北大" << endl;
        }
        else if(score>750)
        {
            cout << "恭喜你考入了清华" << endl;
        }
    }
    else if(score>500)
    {

        cout << "恭喜你考上了二本大学" << endl;
    }
    else if(score>400)
    {
        cout << "恭喜你考上了三本大学" << endl;

    }
    else
    {
        cout << "没考上本科"  << endl;
    }

    return 0;
}

练习案例:三只小猪称体重
有三只小猪ABC,请分别输入三只小猪的体重,并判断那只小猪体重最重?

#include <iostream>
using namespace std;
int main()
{
    //案例:三只小猪称体重

    //1.创建三只小猪的重量
    int a,b,c;

    // 2.让用户输入三只小猪的体重
    cout << "分别输入三只小猪的分数" << endl;
//     cin >>a,b,c; // cin不支持多个变量一起输入
    cout << "请输入小猪a的体重 ";
    cin >> a;
    cout << "请输入小猪b的体重 ";
    cin >> b;
    cout << "请输入小猪c的体重 ";
    cin >> c;
    // 3.打印用户输入小猪的体重
     cout << "小猪a体重=" <<a << endl;
     cout << "小猪b体重=" <<b << endl;
     cout << "小猪c体重=" <<c << endl;
    // 4.进行判断,找出那只小猪的体重最重
     if (a>b) //a比b重
     {
         if(a>c) //a比c重
         {
             cout << "小猪a的体重最重" << endl;
         }
         else //c比a重
         {
             cout << "小猪c的体重最重" << endl;
         }
     }
     else //b比a重
     {
         if (b>c) //b比c重
         {
             cout << "小猪b的体重最重" << endl;
         }
         else //c比b重
         { 
             cout << "小猪c的体重最重" << endl;
         }
     }
    return 0;
}

此案例,还不算完善,没有判断体重相等的情况,大家可以自行思考一下,补全代码。

4.1.2 三目运算符

作用:通过三目运算符实现简单的判断
语法:表达式1?表达式2:表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

#include <iostream>
using namespace std;
int main()
{
    //三目运算符

    //创建三个变量a,b,c
    int a,b,c;
    a = 10;
    b = 20;
    //将a和b做比较,将变量大的值赋值给c
    c = (a>b?a:b);
    cout <<"c的值=" << c << endl;

    //在C++中三目运算符返回的是变量,可以继续赋值
    (a>b?a:b) = 100; // 进行判断,如果a大于b,将a的值赋给100,否则将b的值赋值给100
    cout << "a=" << a << endl;
    cout << "b=" << b << endl;
    return 0;
}

4.1.3 switch语句

作用:执行多条件分支语句
语句:
 

#include <iostream>
using namespace std;
int main()
{
    //switch语句

    //给电影进行打分操作
    // 10~9 经典
    // 8~7 非常好
    // 6~5 一般
    // 5以下 烂

    // 1.提示用户给电影打分
    cout << "请给电影进行打分" << endl;
    // 2.用户输入分数
    int score;
    cin >> score;
    cout << "你打的分数是" << score << endl;
    // 3.根据分数输出结果
    switch(score)
    {
    case 10:  //注意:这里是冒号,不是分号
        cout << "你认为是经典电影" << endl;
        break; // 代表退出当前分支,如果你不写break,条件会一直走。不会中止
    case 9:
        cout << "你认为是经典电影" << endl;
        break;
    case 8:
        cout << "你认为是电影非常好" << endl;
    case 7:
        cout << "你认为是电影非常好" << endl;
        break;
    case 6:
        cout << "你认为电影一般" << endl;
        break;
    case 5:
        cout << "你认为电影一般" << endl;
        break;
    default: //如果以上条件都没,则执行以下代码 ,条件超出10分,也会执行,可以先进性判断在执行以下代码
        cout << "你认为电影烂"  << endl; 
    }
    return 0;
}

if和switch区别?
// switch缺点,判断时候只能是整型或者字符型,不可以是一个区间
// switch优点,结构清晰,执行效率高。

4.2 循环结构

4.2.1 while循环语句

作用:满足循环条件,会一直执行
语法:while(循环条件){循环语句}

#include <iostream>
using namespace std;
int main()
{
    //while 循环
    // 在屏幕中打印0~9这10个数字
    int num = 0;
    while (num<10){ // 注意在写循环中,避免死循环
        cout << num << endl;
        num++;
        }
    return 0;
}

 while循环练习案例:猜数字
案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示猜大了,还是猜小了,猜对了用户胜利。
 

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //while 循环案例

    // 1.系统生成随机数
//    int num = rand()%100;  //C++中使用rand生成随机数,此函数会生成0~99的随机数,需要加1生成100
//    num += 1; //因为次数的生成的随机数是伪随机数,所以每次都是42

    // 如果想生成真正的随机数,需要添加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样。
    srand((unsigned int)time(NULL)); //此处最好是添加一个头文件 ctime
    int num = rand()%100 +1;

    cout << "系统生成的随机数是"  << num << endl;
    // 2.用户进行猜测
    while(true)
        {
    int val;
    cout << "用户进行输入" << endl;
    cin >> val;
    // 3.进行判断
    if (val>num)
    {
        cout << "猜测过大" << endl;

    }
    else if(val<num)
    {
        cout << "猜测过小" << endl;
    }
    else
    {
        cout << "猜测正确" << endl;
            break;
    }
    }
    return 0;

}

4.2.2 do...while循环语句

作用:满足循环条件,执行循环语句
语法:do{循环语句}while(循环条件);
注意:与while的区别在于do...while会先执行一次循环语句,在判断循环条件。

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //do while语句
    // 在屏幕中输出0~9 这10个数字
    int num = 0;
    do
    {
        cout << num << endl;
        num++;
    }
    while(num<10);


    return 0;

}

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //do while语句
    // 求出所有三位数的水仙花树
    // 1.找出所有的三位数(100~999)
    int num = 100;
    do{
        // 2.找出水仙花树
        // 获取个位 %10
        // 获取十位 /10%10
        // 获取百位 /100
        int a; // 个位
        int b; // 十位
        int c; // 百位
        a = num%10;
        b = num/10%10;
        c = num/100;
        // 3.判断,如果个位^3 +十位^3+百位^3 = num
        if((a*a*a + b*b*b +c*c*c) == num)
        {
            cout << num << endl;
        }
//        cout << num << endl;
        num++;
    }
    while(num<1000);


    return 0;

}

4.2.3 for循环语句

作用:满足循环条件,执行循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
 

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //for循环
    //打印0~9
    int num;
    for(num=0;num<10;num++)
    {
        cout << num << endl;
    }
    return 0;

}

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

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //for循环
    int num;
    for(num=1;num<=100;num++)
    {
        if (num%7 ==0 ||num%10 ==7 or num/10 ==7 )
            {
                cout << "敲桌子" << endl;
            }
        else
        {
        cout << "num=" << num << endl;
        }
    }
    return 0;

}

4.2.4 循环嵌套

作用:在循环体内,在嵌套一层循环,解决实际问题。
案例:打印99乘法表
 

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
    //打印99乘法表
    for(int i=1;i<10;i++)
    {
        for(int j=1;j<=i;j++)
        {
            cout << j <<"*" << i << "=" << i*j<< "\t";
        }
        cout << endl;
    }
    return 0;

}

4.3 跳转语句

4.3.1 break语句

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
   // break;

    // 1.出现在是switch中
    /*
   cout << "请选择副本的难度" << endl;
   cout << "1.普通" << endl;
   cout << "2.中等" << endl;
   cout << "3.困难" << endl;
   int select;
   cin >> select;
   switch(select){
   case 1:
       cout << "你选择了普通难度副本" << endl;
       break;
   case 2:
       cout << "你选择了中等难度副本" << endl;
       break;
   case 3:
       cout << "你选择了困难难度副本" << endl;
       break;
   default:
       break;
   }
    */

   // 2.出现在循环语句中
   /*
   for(int i=0;i<10;i++)
   {
       cout << i << endl;
       if (i == 5)
       {
           break;
       }
   }
    */

    // 3.出现在嵌套循环语句中
   for(int num=1;num<10;num++)
   {
       for(int num1=1;num1<=num;num1++)
       {
           if (num == num1)
           {
               cout << num << endl;
               break; //退出循环,只退出了内层循环
               // continue; // 跳过后续语句,进入下一次循环
               cout << "相同" << endl;

           }
       }
   }
}

 4.3.2 continue语句

作用:在循环语句中,跳过当前循环,执行下一次代码
 

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
   // continue
    for(int i = 0;i<10;i++)
   {
       if (i== 5)
        {
            continue;
           
           cout << i << endl; // continue之后的代码不执行

        }
       cout << i << endl;

   }
    return 0;
}

4.3.3 跳转语句

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

#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
   // goto语句
    cout << "1" << endl;
    cout << "2" << endl;
    goto A; // 一般goto后面加个大写字母
    cout << "3" << endl;
    cout << "4" << endl;
    A: // 标记加冒号,可以直接跳转
    cout << "5" << endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值