• c语言 --- 分支结构


    if 语句

    if (表达式)         
    {
                              //满足条件执行
    }                       

    尽量带上这个{ },不带只管理一条语句

    1. //No.1 基本if语句
    2. if ("很帅") //非零表示成立
    3. {
    4. printf("太帅了!\n");
    5. }
    6. int a = 1;
    7. if (a = 0) //赋值语句充当条件,最终赋的值充当条件 if(0)
    8. {
    9. printf("赋值语句!\n");
    10. }
    11. //求最大值
    12. int b;
    13. int c;
    14. scanf_s("%d%d%d", &a, &b, &c);
    15. //No.2 if处理最大值问题
    16. int max = a;
    17. if (max < b)
    18. {
    19. max = b;
    20. }
    21. if (max < c)
    22. {
    23. max = c;
    24. }
    25. printf("max=%d\n", max);
    26. //No.3 if处理多个条件使用逻辑运算符 && ||
    27. //判断一个数字是否能够被 3 和 5 整除
    28. int num = 45;
    29. if (num % 3 == 0 && num % 5 == 0)
    30. {
    31. printf("满足条件的数字\n");
    32. }
    33. //判断一个数字是否能够被 3 但是不能被 5 整除
    34. num % 3 == 0 && num % 5 != 0
    35. //判断一个数字能够被 3 或者被 5 整除
    36. num % 3 == 0 || num % 5 == 0

    if_else 语句

    //复合语句
    if (表达式)
    {
        //条件成立执行这里  
        printf("1");
    }
    else
    {
        //条件不成立执行这里
        printf("1");
    }

    如果输入的数字是奇数就打印奇数,如果输入的数字是偶数就打印偶数

    1. //No.4 if_else语句
    2. num = 3;
    3. if (num % 2 == 0) //被2整数
    4. {
    5. printf("偶数\n");
    6. }
    7. else
    8. {
    9. printf("奇数\n");
    10. }

    if_else if _else

    //条件细化、条件的逐步筛选
    if (表达式1)
    {
        //1.
    }
    else if (表达式2)
    {
        //2.
    }
    else if (表达式3)
    {
        //3.    
    }
    . . . . . .
    else
    {
        //可以省略
    }
    //整个语句是一条复合语句,只会做一次成功的比较,执行一个地方的语句

    学生的成绩分段
    90分:A
    70分 - 89分:B
    60分 - 69分:C
    60分以下:D

    1. //No.5 if_else if _else
    2. int score = 0;
    3. printf("请输入一个分数:");
    4. //分数不定
    5. scanf_s("%d", &score);
    6. //不考虑不满足条件的分数: 180, -19
    7. if (score >= 90)
    8. {
    9. printf("A\n");
    10. }
    11. else if (score >= 70 /*&& score < 90*/)
    12. {
    13. printf("B\n");
    14. }
    15. else if (score >= 60/* && score < 70 被上面的拦截 */)
    16. {
    17. printf("C\n");
    18. }
    19. else
    20. {
    21. printf("D\n");
    22. }

    1.else 不能独立存在
    2.else 只和最近的 if 搭配(如果大家常写 { },不存在这样的问题) 

    1. //No.6 if 和 else 的搭配问题
    2. int number = 3;
    3. if (number > 1)
    4. {
    5. printf("大于1\n");
    6. if (number > 2)
    7. {
    8. printf("大于2\n");
    9. }
    10. else
    11. {
    12. printf("小于2\n");
    13. }
    14. if (num==3)
    15. {
    16. printf("等于3\n");
    17. }
    18. }
    19. else
    20. {
    21. printf("小于1\n");
    22. }
    23. 大于1
    24. 大于2
    25. 等于3
    26. //没有{}的组合方式
    27. if (number > 1)
    28. printf("大于1\n");
    29. if (number > 2)
    30. printf("大于2\n");
    31. else
    32. printf("小于2\n");
    33. if (num==3)
    34. printf("等于3\n");
    35. else
    36. printf("小于1\n");
    37. 大于1
    38. 大于2
    39. 等于3

    switch 语句

    switch(表达式1)
    {
        case 常量1:  //默认表达式1 和常量1 比较
            语句1;
        case 常量2:
             语句2;
        case 常量3:
             语句3;
        default:
             所有 case 语句不满足才跳到这个位置,其他情况执行的地方;
    }
    1.switch执行过程
    2.case后面必须是常量,一般写数字或者字符,不能写字符串
    3.switch语句只做一次成功的比较,从满足条件的位置开始,后面的语句不需要比较,语句2、语句3、defalt 都会依次执行

    1. //No.1 switch语句基本形态
    2. char key = 'A';
    3. switch (key)
    4. {
    5. case 'A': //key=='A'
    6. putchar(key++); //A key='B';
    7. case 'C':
    8. putchar(key++); //B key='C'
    9. case 'B':
    10. putchar(key++); //C key='D'
    11. default:
    12. printf("END"); //END
    13. }

    4.default的位置是随便放的,一般是放在最下面的
    5.switch语句不执行 case 和 default 以外的其他语句,基本形态没有 break,break 是用来做跳出,语句 break 会跳出整个 switch 语句

    1. //No.2 更多情况结合break使用 保证只执行一个case
    2. printf("\n");
    3. key = 'A';
    4. switch (key)
    5. {
    6. case 'A': //key=='A'
    7. putchar(key++); //A key='B';
    8. break;
    9. case 'C':
    10. putchar(key++);
    11. break;
    12. case 'B':
    13. putchar(key++);
    14. break;
    15. default:
    16. printf("END");
    17. break;
    18. }
    1. //3.1 包含其他语句
    2. key = 'A';
    3. switch (key)
    4. {
    5. if (key == 'A') //不会执行,但是不会报错
    6. {
    7. printf("其他的代码!\n");
    8. break;
    9. }
    10. case 'A': //key=='A'
    11. putchar(key++); //A key='B';
    12. break;
    13. case 'C':
    14. putchar(key++);
    15. break;
    16. case 'B':
    17. putchar(key++);
    18. break;
    19. default:
    20. printf("END");
    21. break;
    22. }
    1. //3.2 在case中定义变量,一定要带{}或者在switch上面定义 限制变量的作用域
    2. printf("\n");
    3. key = 'C'; ←
    4. switch (key)
    5. {
    6. case 'A': //key=='A'
    7. {
    8. putchar(key++); //A key='B';
    9. int number;
    10. number = 3;
    11. printf("%d\n", number);
    12. break;
    13. }
    14. case 'C': ←
    15. {
    16. //变量number不存在
    17. printf("%d\n", number); ←
    18. putchar(key++);
    19. break;
    20. }
    21. case 'B':
    22. {
    23. putchar(key++);
    24. break;
    25. }
    26. default:
    27. {
    28. printf("END");
    29. break;
    30. }
    31. }

    switch 常用形态

    菜单跳转

    1. //1.菜单交互
    2. while (1)
    3. {
    4. //菜单绘制
    5. printf("------[xxx管理通]------\n");
    6. printf("\t0.退出系统\n");
    7. printf("\t1.录入信息\n");
    8. printf("\t2.删除信息\n");
    9. printf("\t3.查找信息\n");
    10. printf("-----------------------\n");
    11. //菜单交互
    12. int key = 0;
    13. scanf_s("%d", &key);
    14. switch (key)
    15. {
    16. case 0:
    17. printf("退出系统成功!\n");
    18. system("pause"); //防止闪屏,等待按键继续
    19. exit(0); //关闭整个程序
    20. break;
    21. case 1:
    22. printf("录入信息!\n");
    23. break;
    24. case 2:
    25. printf("删除信息!\n");
    26. break;
    27. case 3:
    28. printf("查找信息!\n");
    29. break;
    30. default:
    31. printf("输入错误 重新输入!\n");
    32. break;
    33. }
    34. system("pause"); //防止闪屏,等待按键继续
    35. system("cls"); //清屏
    36. }

    按键交互

    1. #include <stdio.h>
    2. #include <stdlib.h> //system函数头文件
    3. #include <conio.h>
    4. int main()
    5. {
    6. while (1)
    7. {
    8. printf("貌美如花的小姐姐朝你走来!---\n");
    9. char userkey = _getch(); //不可见的按键交互,不需要回车确认输入
    10. switch (userkey)
    11. {
    12. //相同的case处理方案可以把所有case写在一起
    13. case 'w':
    14. case 'W':
    15. //键码值
    16. case 72:
    17. printf("你朝-->上方-->逃逸\n");
    18. break;
    19. case 'A':
    20. case 'a':
    21. case 75:
    22. printf("你朝-->左边-->逃逸\n");
    23. break;
    24. case 's':
    25. case 'S':
    26. case 80:
    27. printf("你朝-->下方-->逃逸\n");
    28. break;
    29. case 'd':
    30. case 'D':
    31. case 77:
    32. printf("你朝-->右边-->逃逸\n");
    33. break;
    34. }
    35. }
    36. return 0;
    37. }

    变量的作用域和生命周期

    • 作用域:使用范围

      • 局部变量

      • 全局变量

      • 外部变量:extern

    • 生命周期:变量产生到死亡的时间段

      • 静态变量:与生命周期有关系

      • 自动变量(auto),默认变量

    看一个变量的作用域和生命周期只需要看 { } 即可

    全局变量、静态变量没有做初始化,默认值为 0
    全局变量不宜过多,因为生命周期只有当程序关闭才结束

     

    1. #include <stdio.h>
    2. int g_num; //全局变量
    3. extern int e_num; //告诉当前文件 该变量是外部文件中的变量 针对于多文件
    4. int main()
    5. {
    6. //静态变量养成初始化的习惯
    7. static int sNum=1;
    8. //会存放上一次执行结果,初始化操作只会做一次
    9. printf("%d\n", sNum);
    10. while (1)
    11. {
    12. static int sCount = 1; //只会执行一次
    13. int count = 1; //每一次循环都执行
    14. sCount++;
    15. count++;
    16. printf("sCount=%d,count=%d\n", sCount,count);
    17. }
    18. printf("%d\n", g_num);
    19. printf("%d\n", e_num);
    20. int iNum = 0; //局部变量
    21. {
    22. int number = 0; //局部变量
    23. printf("%d\n", number);
    24. }
    25. int num;
    26. //error C4700: 使用了未初始化的局部变量“num”
    27. //printf("%d\n", num);
    28. //printf("%d\n", number); 未定义的标识符
    29. for (int i;0;)
    30. {
    31. }
    32. //i = 3; //未定义
    33. return 0;
    34. }
    35. sCount=2,count=2
    36. sCount=3,count=2
    37. sCount=4,count=2
  • 相关阅读:
    Node.js事件循环
    Java程序员不满自身现状,是如何在三年内一步步进入BAT拿高薪?
    Allegro软件Shape菜单下的每个命令的含义
    Texax Instruments 处理器资料导航(TI AM64x)
    (26)Blender源码分析之顶层菜单的关于菜单
    ST7789-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
    三、安全工程练习题(CISSP)
    QT 5.1.2中英文切换
    苏宁易购高鑫跑步进场,“即时零售”或成疫情后时代增长新密码
    基于Springboot外卖系统02:数据库搭建+Maven仓库搭建
  • 原文地址:https://blog.csdn.net/weixin_60569662/article/details/123626617