第 6 节-流程控制语句(一)

59 阅读5分钟

unsetunset流程控制语句(一)

通过一些语句来控制程序的执行流程

  • 流程控制语句的分类

    • 顺序结构
    • 分支结构
    • 循环结构

Part1:顺序结构:从上往下依次执行

📕:总结

  • 顺序结构是程序默认的执行流程
  • 顺序结构是从上往下依次运行的

Part2:分支结构:程序在执行的过程当中出现了岔路

2.1 分支结构的分类

  • if 语句

    • if 表示判断
    • 作用:如果满足条件,才可以执行指定的代码
    • 使用场景:某些代码满足条件的时候才执行

if 语句需要的能力:利用 if 语句对数据进行判断,从而执行不同的代码

2.1.1 if 语句的格式
1. 语句的第一种格式

第一个演示程序:

#include <stdio.h>
int main(){
    /*
        if的格式:
            if(关系表达式)
            {
                语句体;
            }
    */
   // 需求:判断变量 a 里面记录的值,是否大于10,如果成立,就打印语句:真的大于10
   // 定义变量
   int a = 5;
   // 判断
   if (a > 10){
    printf("真的大于10\n");
    return 0// 结束程序
   }
}

练习:体温测量仪

需求:定义变量表示体温,当温度大于 37.5℃的时候,会有语音报警

// 4_2_if_demo.c
#include <stdio.h>
int main(){
   // 需求:温度大于 37.5 度,就会有语音报警
   // 定义变量记录体温
   double temperature;
   scanf("%lf",&temperature);
   // 判断
   if (temperature > 37.5){
    printf("体温过高语言报警\n");
    return 0// 结束程序
   }
}

练习

  • 需求:

    • 需求:初始最大生命200,受到80点伤害,技能恢复100点血
    • 当前血量是多少?
 #include <stdio.h>
int main(){
  // 需求:游戏中人物的血条
  /*
  初始最大生命:200
  受到了伤害:80
  恢复了血量:100
  请问当前血量是多少?
  */
 int blood = 200// 初始最大生命
 int damage = 80// 受到的伤害
 int restore = 100// 恢复的血量

 // 游戏的逻辑思路
 blood = blood - damage + restore;
 // printf("当前血量是:%d\n", blood);
 
 // 判断
 if(blood > 200)
 {
   blood = 200;
 }
 printf("当前血量是:%d\n", blood);
 return 0;
}

💡 细节1:

  • 在 C 语言中,如果判断的结果是一个数字,非 0 表示条件成立,0 表示条件不成立
#include<stdio.h>
int main(){
    if0 ){
        printf("条件为0代码不会执行");
    }
    return 0;
}

💡 细节2:如果大括号里面的语句体只有一行,那么大括号可以省略不写

    // 细节2:如果大括号里面的语句体只有一行,那么大括号可以省略不写
    int a = 10;
    if ( a > 5)
        printf("真的大于10\n");
        printf("真的大于10\n");
        printf("真的大于10\n");
        printf("真的大于10\n");
        printf("真的大于10\n");

练习 1:

思路比较简单:
1.定义 🍏 中虫子的数量
2.if 进行判断(单分支结构)
2. if语句的第二种格式

引入例子:❓遇到这种多分支,单一判断无法满足的条件该怎么办?

思路比较简单:
1.定义一个变量的值为1
2.if 进行隐含条件判断

#include<stdio.h>
int main(){
   // 1.定义一个变量用来表示姑娘是否满意
   int satisfied = 1;
   // 2.判断姑娘是否满意
   if(satisfied)
   {
    printf("我们还是可以一起的\n");
   }
   else
   {
    printf("还是分了吧\n");
   }
    return 0;
}

    if ( 关系表达式)
    {
        语句体 A;
    }
    else
    {
        语句体 B;

    }

练习 2: 表白

需求:定义一个整数表示我心爱的姑娘对我的好感度。 如果大于等于60,就同意我的表白。 否则,我就去表白别人了。

#include<stdio.h>
int main(){

   // 1.定义一个变量用来表示姑娘的好感度
   int love = 60;
   // 2.判断
   if(love >= 70)
   {
    printf("同意我表白\n");
   }
   else
   {
    printf("表白别人\n");
   }
    return 0;
}

练习 3:

需求: 我跟小诗诗一起去看电影 如果在同一排而目连着坐,我会开心的看电影 如果不是在同一排或者没有连着坐,我会开心的打游戏 提示: 每张电影票定义两个整形变量,分别表示第几排和座位号 电影票号的规则: X排x号

#include <stdio.h>
int main()
{
    // 1.定义4个变量分别表示两张电影票
    int rowA = 5;
    int numberA = 6;

    int rowB = 6;
    int numberB = 7;
    // 2.判断
    /*
        如果在同一排而目连着坐,我会开心的看电影
        同一排:roWA==rowB
        连着坐:numberA-numberB
        如果不是在同一排或者没有连着坐,我会开心的打游戏
    */

    if ((rowA = rowB) && (numberA - numberB == 1 || numberA - numberB == -1))
    {
        printf("我会开心的看电影");
    }
    else
    {
        printf("我会开心的打游戏");
    }
    return 0;
}
3. if语句的第三种格式

if(关系表达式A)
{
  语句体A;
}
else if(关系表达式B)
{
  语句体B;
}
else if(关系表达式C)
{
  语句体C;
}
else
{
  语句体N;
}

从上往下依次进行判断 只有要有一个判断成立,就执行对应的语句体 如果所有的判断都不成立,就执行else的语句体

需求:
键盘录入游戏氪金的总额度,不同的额度VP等级也不一样

  • 99元:尊贵的VIP1
  • 0~499元:尊贵的VIP2
  • 0~999元:尊贵的V1P3
  • 00~1999元:尊贵的V1P4
  • 00~5000元:顶级的V1P5


练习 4


  • 我第一次的写法
#include <stdio.h>
int main()
{
    /*
    考试奖励:
    95-100:自行车一辆
    90-94:游乐场玩一天
    80-~89:变形金刚一个
    80以下:胖揍一顿
    */
    // 1.定义一个变量记录小明的考试成绩
    int score = 80;
    // 2.判断
    if (score > 95 & score < 100)
    {
        printf("自行车一辆");
    }
    else if (score > 90 & score < 94)
    {
        printf("游乐场玩一天");
    }
    else if (score > 80 & score < 89)
    {
        printf("变形金刚一个");
    }
    else
    {
        printf("胖揍一顿");
    }
    return 0;
}
  • 正确结果

对于一些异常数据,需要再进行一次嵌套,去除掉异常区间,保留正常数值