• 【玩转C语言】第四讲--->操作符与循环语句


     🔥博客主页🔥:【 坊钰_CSDN博客 】

    欢迎各位点赞👍评论✍收藏⭐

    引言:

    大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识,另外,还会不定时更新【C语言训练题库】,想学好C语言的宝子们,一定要收藏起来,一起努力吧!

    点赞!收藏!以防以后找不到了!!!

    目录

    1. if 语句

    1.1 语法形式

    1.2 else 语句

    1.3 分支中包含多条语句

    1.4 嵌套if 语句

    1.5 else 语句悬空问题

    2. 关系操作符

    3. 条件操作符

    4. 逻辑操作符 && || !

    4.1 取反操作符 !

    4.2 与运算符 &&

    4.3 或运算符 ||

     4.4 闰年的判断

     5. switch 语句

    5.1 switch 计算除以3后的余数

    5.2 switch 中的 break 语句

    5.3 switch 语句中的 default 语句

    5.4 case 和 default 的顺序问题

    6. while 循环

    6,1 语法结构

    6.2 while 循环实践

    7. for 循环

    7.1 for 循环语法形式

    7.2 for 循环执行流程

    ​编辑 7.3 for 循环的实践

    8. do-while 循环

    8.1 语法形式

    8.2 执行流程

    8.3 循环实践

    9. 小结


    1. if 语句

    1.1 语法形式

    if 语句的语法形式如下:

    1. if (表达式)
    2. 语句;

    表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行

    C语言中,0 表示为假,非 0 表示为真

    例:

    1. //判断一个数是否为奇数
    2. #include
    3. int main()
    4. {
    5. int num = 0;
    6. scanf("%d", &num);
    7. if(num % 2 == 1)
    8. printf("%d 是奇数\n", num);
    9. return 0;
    10. }

    1.2 else 语句

    如果上述不为奇数,为偶数,那就要用到 else 语句了

    if else 语句语法形式

    1. if (表达式)
    2. 语句1;
    3. else
    4. 语句2;

     若表达式为真,执行语句1 ,若表达式为假,执行语句2;

    上述判断奇数的代码可以优化一下

    1. #include
    2. int main()
    3. {
    4. int num = 0;
    5. scanf("%d", &num);
    6. if(num % 2 == 1)
    7. printf("%d 是奇数\n", num);
    8. else
    9. printf("%d 是偶数\n", num);
    10. return 0;
    11. }

    1.3 分支中包含多条语句

    看下面的代码,猜猜输出的是什么?

    1. #include
    2. int main()
    3. {
    4. int a = 10;
    5. if (a > 5)
    6. printf("haha");
    7. printf("hhhh");
    8. return 0;
    9. }

    答案是输出 haha;

    因为,if 语句后只能执行一条语句,如果想要两条都执行,那要加上大括号 例:

    1. #include
    2. int main()
    3. {
    4. int a = 10;
    5. if (a > 5)
    6. {
    7. printf("haha");
    8. printf("hhhh");
    9. }
    10. return 0;
    11. }

    这样就打印两条语句了

    1.4 嵌套if 语句

    if 里面也可以嵌套if 语句

    1. #include
    2. int main()
    3. {
    4. int n = 10;
    5. if (n>0)
    6. {
    7. if (n>5)
    8. {
    9. printf("haha");
    10. }
    11. else
    12. {
    13. printf("hehe");
    14. }
    15. }
    16. else
    17. {
    18. printf("hello");
    19. }
    20. return 0;
    21. }

    1.5 else 语句悬空问题

    如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配

    1. #include
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 2;
    6. if(a == 1)
    7. if(b == 2)
    8. printf("hehe\n");
    9. else
    10. printf("haha\n");
    11. return 0;
    12. }

    猜猜运行结果是啥?

    结果是什么都不打印,这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配

    如果我们希望else确实和第⼀个if匹配,可以这样修改代码 

    1. #include
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 2;
    6. if (a == 1)
    7. {
    8. if (b == 2)
    9. printf("hehe\n");
    10. }
    11. else
    12. printf("haha\n");
    13. return 0;
    14. }

    只要带上适当的大括号,代码的逻辑就会更加的清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高

    2. 关系操作符

    C语言主要的关系操作符有下面6个

    • > 大于运算符
    • < 小于运算符
    • >= 大于等于运算符
    • <=小于等于运算符
    • == 相等运算符
    • != 不相等运算符

    关系操作符通常返回 0 或 1 ,表示真假

    比如: (20>10) ----> 返回 1 ,(10>20) ---> 返回 0 

    注意: 相等运算符(==) 和 赋值运算符(=) 两个不一样 

    另⼀个需要避免的错误是:多个关系运算符不能连用

    要表达 1 < 2 < 3 时的用法:

    1. //错误用法
    2. 1 < 2 < 3
    3. //正确用法
    4. 1 < 2 && 2 < 3

    3. 条件操作符

    条件操作符也叫三目操作符,需要接受三个操作数的

    exp1 ? exp2 : exp3

    条件操作符的计算逻辑是:

    1. 如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果
    2. 如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果

    例:求两个数中的最大值

    1. #include
    2. int main()
    3. {
    4. int n = 0;
    5. int m = 0;
    6. scanf("%d %d", &n, &m);
    7. int max = m > n ? m : n;
    8. printf("%d", max);
    9. return 0;
    10. }

    4. 逻辑操作符 && || !

    逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下⾯三个运算符

    • ! :逻辑取反运算符(改变单个表达式的真假)
    • && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
    • || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

    4.1 取反操作符 !

    如果 a 为真的,那 !a 就是假的,反之 a 为假的,那 !a 就是真的

    4.2 与运算符 &&

    (exsp 1) && (exsp 2) && (exsp 3)

     注意:如果 exsp 1 为假( 0 ),那后面两个 exsp 2 和 exsp 3 都不计算了

                如果exsp 1 为真,则依次往下计算

    4.3 或运算符 ||

    (exsp 1) || (exsp 2) || (exsp 3)

    注意:如果 exsp 1 为真( 1 ),那后面两个 exsp 2 和 exsp 3 都不计算了

                如果exsp 1 为假,则依次往下计算

     4.4 闰年的判断

    输闰年判断的规则:

    1. 能被4整除并且不能被100整除是闰年
    2. 能被400整除是闰年
    1. #include
    2. //代码1
    3. int main()
    4. {
    5. int year = 0;
    6. scanf("%d", &year);
    7. if(year%4==0 && year%100!=0)
    8. printf("是闰年\n");
    9. else if(year%400==0)
    10. printf("是闰年\n");
    11. return 0;
    12. }
    13. //代码2
    14. int main()
    15. {
    16. int year = 0;
    17. scanf("%d", &year);
    18. if((year%4==0 && year%100!=0) || (year%400==0))
    19. printf("是闰年\n");
    20. return 0;
    21. }

     5. switch 语句

    除了 if 语句外,C语言还提供了 switch 语句来实现分支结构

    switch 语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式

    1. switch (expression)
    2. {
    3. case value1: statement
    4. case value2: statement
    5. default: statement
    6. }
    • switch 后的 expression 必须是整型表达式 
    • case 后的值,必须是整形常量表达式

    5.1 switch 计算除以3后的余数

    练习:输入任意⼀个整数值,计算除3之后的余数 

    1. #include
    2. int main()
    3. {
    4. int n = 0;
    5. scanf("%d", &n);
    6. switch(n%3)
    7. {
    8. case 0:
    9. printf("整除,余数为0\n");
    10. break;
    11. case 1:
    12. printf("余数是1\n");
    13. break;
    14. case 2:
    15. printf("余数是2\n");
    16. break;
    17. }
    18. return 0;
    19. }
    •  case 和后边的数字之间必须有空格
    • 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句

    5.2 switch 中的 break 语句

    我们如果把上述代码中的break全都去掉,看看结果

    1. #include
    2. int main()
    3. {
    4. int n = 0;
    5. scanf("%d", &n);
    6. switch (n % 3)
    7. {
    8. case 0:
    9. printf("整除,余数为0\n");
    10. case 1:
    11. printf("余数是1\n");
    12. case 2:
    13. printf("余数是2\n");
    14. }
    15. return 0;
    16. }

    所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了 

    5.3 switch 语句中的 default 语句

    1. #include
    2. int main()
    3. {
    4. int n = 0;
    5. scanf("%d", &n);
    6. switch (n)
    7. {
    8. case 0:
    9. printf("输入数为 0\n");
    10. case 1:
    11. printf("输入数为 1\n");
    12. case 2:
    13. printf("输入数为 2\n");
    14. default :
    15. printf("输入错误,请重新输入\n");
    16. }
    17. return 0;
    18. }

    5.4 case 和 default 的顺序问题

    在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?

    其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。 不过我们通常是把 default 子句放在最后处理的

    6. while 循环

    6,1 语法结构

    1. while(表达式)
    2. {
    3. 语句;
    4. }

    6.2 while 循环实践

    例:打印 1~10 数字

    1. #include
    2. int main()
    3. {
    4. int a = 1;
    5. while (a <= 10)
    6. {
    7. printf("%d ", a);
    8. a++;
    9. }
    10. return 0;
    11. }

    7. for 循环

    7.1 for 循环语法形式

    1. for(表达式1; 表达式2; 表达式3)
    2. {
    3. 语句;
    4. }
    • 表达式1 用于循环变量的初始化
    • 表达式2 用于循环结束条件的判断
    • 表达式3 用于循环变量的调整 

    7.2 for 循环执行流程

     7.3 for 循环的实践

    练习:在屏幕上打印1~10的值

    1. #include
    2. int main()
    3. {
    4. for (int i = 1; i <= 10; i++)
    5. {
    6. printf("%d ", i);
    7. }
    8. return 0;
    9. }

    8. do-while 循环

    8.1 语法形式

    1. do
    2. 语句;
    3. while(表达式)

    8.2 执行流程

    8.3 循环实践

    在屏幕上打印1~10的值 

    1. #include
    2. int main()
    3. {
    4. int a = 1;
    5. do
    6. {
    7. printf("%d ", a);
    8. a++;
    9. } while (a <= 10);
    10. return 0;
    11. }

    9. 小结

     以上就是关于【玩转C语言】第四讲的内容了,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持! 

  • 相关阅读:
    进程(软件)
    ESP8266 WiFi物联网智能插座—下位机软件实现
    html静态网站简单的学生网页作业源码 基于游戏网站设计与实现共计10个页面 (仿地下城与勇士游戏网页)
    关于并发编程与线程安全的思考与实践 | 京东云技术团队
    [hive] posexplode函数
    .NET MAUI 多平台应用 UI 应用
    C++征途 --- 内建函数对象
    简单的代码优化(后端)
    MySQL表的增删改查(进阶)
    在Mac上安装配置svn
  • 原文地址:https://blog.csdn.net/Gao123456fy/article/details/139563005