赞
踩
#接嵌入式初学-C语言-七#
分支结构:又被称之为选择结构
语法:
- if(条件1)
- {
- 语句1;
- } else if(条件2)
- {
- 语句2;
- }
- ...
- else {
- 语句n+1;
- }
案例:
- #include <stdio.h>
- int main()
- {
- // 需求:编一程序,要求输入一个x值,输出y值
- // 方式1:嵌套的if..
- int x,y;
- printf("请输入一个整数:\n");
- scanf("%d",&x);
- // 条件判断
- if(x < 0)
- {
- y = -1;
- }
- else
- {
- // x >= 0
- if(x == 0)
- {
- y = 0;
- }
- else
- {
- y = 1;
- }
- }
- printf("方式1:x=%d,y=%d\n",x,y);
- // 方式2:多分支if..else if....else..
- // 条件判断
- if(x < 0)
- {
- y = -1;
- }
- else if(x == 0)
- {
- y = 0;
- }
- else
- {
- y = 1;
- }
- printf("方式2:x=%d,y=%d\n",x,y);
- }
案例:
- #include <stdio.h>
- /**
- * 需求:高校要求对实训学生根据实训成绩进行评级
- 范围:0 <= score <= 100;
- 评级:
- score >= 90 优秀
- score >= 80 良好
- score >= 70 中等
- score >= 60 及格
- score < 60 不及格
- */
- int main()
- {
- // 声明一个变量,存储成绩
- int score;
- printf("请录入学生成绩:\n");
- scanf("%d",&score);
- // 对score进行合法校验
- if(score >= 0 && score <= 100)
- {
- // 对合法输入的成绩进行评级
- if(score >= 90)
- {
- printf("优秀\n");
- }
- else if(score >= 80)
- {
- printf("良好\n");
- }
- else if(score >= 70)
- {
- printf("中等\n");
- }
- else if(score >= 60)
- {
- printf("及格\n");
- }
- else
- {
- printf("不及格\n");
- }
- }
- else
- {
- printf("成绩录入不合法!\n");
- }
- }
语法:
- switch(表达式) // 不能是布尔型和 浮点型
- {
- case 常量表达式1:
- 语句体1;
- break;
- case 常量表达式2:
- 语句体2;
- break;
- ...
- case 常量表达式n:
- 语句体n;
- break;
- default:
- 语句体n+1;
- break;// 可以省略
- }
说明:
⑴ 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 不及格
- #include <stdio.h>
- int main()
- {
- int score;// 成绩
- printf("请输入实训成绩:\n");
- scanf("%d",&score);
- if(score >= 0 && score <= 100)
- {
- // 对成绩进行加工
- int l = score / 10;
- switch(l)
- {
- case 10:// 100分
- case 9:// 90~99分
- printf("优秀\n"); // 这里:多个case共用一块代码
- break;
- case 8:
- printf("良好\n");
- break;
- case 7:
- printf("中等\n");
- break;
- case 6:
- printf("及格\n");
- break;
- default:
- printf("不及格\n");
- }
- }
- else
- {
- printf("成绩录入不合法!\n");
- }
- }
2.需求:实现一个简易计算器,要求实现+,-,×,/运算
- #include <stdio.h>
-
- int main()
- {
- printf("简易计算器 v1.0\n");
- printf("请输入两个操作数:\n");
-
- double x,y;// 存放计算数
- char ch;// 运算符
- scanf("%lf,%lf",&x,&y);
- scanf("%c",&ch);// 消除上面产生的最后一个回车符
-
- printf("请输入运算符:(+、-、.*、/)\n");
- scanf("%c",&ch);
- // 计算
- switch(ch)
- {
- case '+':
- printf("%.2lf+%.2lf=%.2lf\n",x,y,x+y);
- break;
- case '-':
- printf("%.2lf-%.2lf=%.2lf\n",x,y,x-y);
- break;
- case '.':
- case '*':
- printf("%.2lf*%.2lf=%.2lf\n",x,y,x*y);
- break;
- case '/':
- if(y == 0)
- {
- printf("除数不能为0\n");
- }
- else
- {
- printf("%.2lf/%.2lf=%.2lf\n",x,y,x/y);
- }
- break;
- default:
- printf("输入错误!");
- }
- return 0;
- }
switch语句的case穿透:
1. case穿透:当case后的break被省略;就会直接执行它后面紧跟的case中的语句(不会判断表达式是 否和它后面的case常量是否相同),这样的现象称之为case穿透。
2. default语句一般放在所有case之后,表明所有的case都不成立时,执行default中的语句;default语 句可以放在switch语句{}内的任意位置。
逻辑非(!) > 算数运算符 (+-*/%)>关系运算符(> < >= 逻辑运算符(&&、||)> 赋 值运算符(=、+=)
set tabstop=4
set shiftwidth=4
set expandtab
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。