当前位置:   article > 正文

嵌入式初学-C语言-八

嵌入式初学-C语言-八

#接嵌入式初学-C语言-七#

分支结构

分支结构:又被称之为选择结构

选择结构的形式

多分支

语法:

  1. if(条件1)
  2. {
  3. 语句1;
  4. } else if(条件2)
  5. {
  6. 语句2;
  7. }
  8. ...
  9. else {
  10. 语句n+1;
  11. }

案例:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. // 需求:编一程序,要求输入一个x值,输出y值
  5. // 方式1:嵌套的if..
  6. int x,y;
  7. printf("请输入一个整数:\n");
  8. scanf("%d",&x);
  9. // 条件判断
  10. if(x < 0)
  11. {
  12. y = -1;
  13. }
  14. else
  15. {
  16. // x >= 0
  17. if(x == 0)
  18. {
  19. y = 0;
  20. }
  21. else
  22. {
  23. y = 1;
  24. }
  25. }
  26. printf("方式1:x=%d,y=%d\n",x,y);
  27. // 方式2:多分支if..else if....else..
  28. // 条件判断
  29. if(x < 0)
  30. {
  31. y = -1;
  32. }
  33. else if(x == 0)
  34. {
  35. y = 0;
  36. }
  37. else
  38. {
  39. y = 1;
  40. }
  41. printf("方式2:x=%d,y=%d\n",x,y);
  42. }

案例:

  1. #include <stdio.h>
  2. /**
  3. * 需求:高校要求对实训学生根据实训成绩进行评级
  4. 范围:0 <= score <= 100;
  5. 评级:
  6. score >= 90 优秀
  7. score >= 80 良好
  8. score >= 70 中等
  9. score >= 60 及格
  10. score < 60 不及格
  11. */
  12. int main()
  13. {
  14. // 声明一个变量,存储成绩
  15. int score;
  16. printf("请录入学生成绩:\n");
  17. scanf("%d",&score);
  18. // 对score进行合法校验
  19. if(score >= 0 && score <= 100)
  20. {
  21. // 对合法输入的成绩进行评级
  22. if(score >= 90)
  23. {
  24. printf("优秀\n");
  25. }
  26. else if(score >= 80)
  27. {
  28. printf("良好\n");
  29. }
  30. else if(score >= 70)
  31. {
  32. printf("中等\n");
  33. }
  34. else if(score >= 60)
  35. {
  36. printf("及格\n");
  37. }
  38. else
  39. {
  40. printf("不及格\n");
  41. }
  42. }
  43. else
  44. {
  45. printf("成绩录入不合法!\n");
  46. }
  47. }

switch

语法:

  1. switch(表达式) // 不能是布尔型和 浮点型
  2. {
  3. case 常量表达式1
  4. 语句体1;
  5. break;
  6. case 常量表达式2
  7. 语句体2;
  8. break;
  9. ...
  10. case 常量表达式n:
  11. 语句体n;
  12. break;
  13. default:
  14. 语句体n+1;
  15. break;// 可以省略
  16. }

说明:

⑴ switch后括号内的表达式可以是任何类型的表达式;

⑵ 若表达式的值与某个常量表达式的值相等时,执行此case后面的语句;若没有相等的值时,执行 default后面的语句;

⑶ 每个case后面的常量表达式的值都必须不相同,否则出现矛盾;

⑷ 各个case 和default出现的次序不影响执行结果;

⑸ case后面的语句中如果没有break语句,则执行完本case后的语句会接着执行下面的case(case穿 透) ;

⑹ 多个case可共用一组语句。

注意:

1. 表达式一般写一个变量,变量的值是一个确定的常量。

2. 当遇到break或者switch语句的右大括号时,switch语句结束。

3. 表达式中的数据类型:char,short,int,long,long long,不能是浮点型。 表达式和常量的数据类型要一致(支持隐式转换),比较是否相同。

案例:

1.需求:根据成绩进行评级

评级:

90 <= score < 100 优秀 90~99/10 == 9 && 100/10 ==10

80 <= score < 90 良好 80~89/10 == 8

70 <= score < 80 中等 70~79/10 == 7

60 <= score < 70 及格 60~69/10 == 6

score < 60 不及格

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int score;// 成绩
  5. printf("请输入实训成绩:\n");
  6. scanf("%d",&score);
  7. if(score >= 0 && score <= 100)
  8. {
  9. // 对成绩进行加工
  10. int l = score / 10;
  11. switch(l)
  12. {
  13. case 10:// 100分
  14. case 9:// 90~99分
  15. printf("优秀\n"); // 这里:多个case共用一块代码
  16. break;
  17. case 8:
  18. printf("良好\n");
  19. break;
  20. case 7:
  21. printf("中等\n");
  22. break;
  23. case 6:
  24. printf("及格\n");
  25. break;
  26. default:
  27. printf("不及格\n");
  28. }
  29. }
  30. else
  31. {
  32. printf("成绩录入不合法!\n");
  33. }
  34. }

2.需求:实现一个简易计算器,要求实现+,-,×,/运算

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("简易计算器 v1.0\n");
  5. printf("请输入两个操作数:\n");
  6. double x,y;// 存放计算数
  7. char ch;// 运算符
  8. scanf("%lf,%lf",&x,&y);
  9. scanf("%c",&ch);// 消除上面产生的最后一个回车符
  10. printf("请输入运算符:(+、-、.*、/)\n");
  11. scanf("%c",&ch);
  12. // 计算
  13. switch(ch)
  14. {
  15. case '+':
  16. printf("%.2lf+%.2lf=%.2lf\n",x,y,x+y);
  17. break;
  18. case '-':
  19. printf("%.2lf-%.2lf=%.2lf\n",x,y,x-y);
  20. break;
  21. case '.':
  22. case '*':
  23. printf("%.2lf*%.2lf=%.2lf\n",x,y,x*y);
  24. break;
  25. case '/':
  26. if(y == 0)
  27. {
  28. printf("除数不能为0\n");
  29. }
  30. else
  31. {
  32. printf("%.2lf/%.2lf=%.2lf\n",x,y,x/y);
  33. }
  34. break;
  35. default:
  36. printf("输入错误!");
  37. }
  38. return 0;
  39. }

switch语句的case穿透:

1. case穿透:当case后的break被省略;就会直接执行它后面紧跟的case中的语句(不会判断表达式是 否和它后面的case常量是否相同),这样的现象称之为case穿透。

2. default语句一般放在所有case之后,表明所有的case都不成立时,执行default中的语句;default语 句可以放在switch语句{}内的任意位置。

扩展

条件表达式中的运算符优先级

逻辑非(!) > 算数运算符 (+-*/%)>关系运算符(> < >= 逻辑运算符(&&、||)> 赋 值运算符(=、+=)

设置vim中tab字符数

set tabstop=4

set shiftwidth=4

set expandtab

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/950056
推荐阅读
相关标签
  

闽ICP备14008679号