第三讲 分支结构(switch)
【C#】三种结构:顺序、分支(if、switch、条件运算符)、循环
【C#】三种结构:顺序、分⽀(if、switch、条件运算符)、循环顺序结构:顺序执⾏语句分⽀结构:通过进⾏⼀个判断在两个可选的语句序列之间选择执⾏(分⽀)if语句:根据给定条件进⾏判定,以执⾏某个分⽀程序段,最多只能执⾏⼀个分⽀,可不执⾏分⽀。
①if(条件表达式){ 语句1;}当条件表达式为真,执⾏语句1,否则,跳过语句1,继续执⾏下⾯的语句②if(条件表达式);{语句1;}表达式括号后跟了“;”,导致if语句为空语句,⼤括号内的语句跟if语句没有关系,⽆论条件真假都会执⾏语句1③级联式if(条件表达式1){语句1;}else if(条件表达式2){语句2;}else{语句3;}哪个条件表达式为真则执⾏哪个语句,当if和else if的条件表达式都为假时,执⾏else⾥的语句3条件运算符:通常有两个分⽀,只执⾏⼀个分⽀条件表达式?表达式1 : 表达式2;如果条件表达式为真,整个条件表达式的值为表达式1的值;如果条件表达式为假,整个条件表达式的值为表达式2的值。
int c = a > b ? a : b;switch语句:多分⽀语句,通过判断整型表达式的值,来决定执⾏语句,通常与case配合使⽤switch ——开关,case ——情况,开关决定发⽣的情况switch(表达式){case值1:{语句1;break;} //语句中需定义变量时加{},不定义可不加case值2:{语句2;break;}……case值n:{语句n;break;}default:{语句n+1;break;} //以上case的情况都不满⾜时执⾏}break⽤在switch…case中⽤于结束某个case,然后执⾏switch之外的语句。
case后⾯的标签只能是整型常量或者整型常量表达式,不能⽤变量作为case的标签。
switch语句⽐if-else级联式更容易阅读,更直观。
整个default语句可以舍弃掉多个case(语句块⼀样时)可以运⾏⼀个语句块case中定义变量需要加{}循环结构:在满⾜某个条件的时候反复执⾏⼀个语句序列(循环)特定条件称为循环条件,反复执⾏的程序段称为循环体①while循环(先判断,后执⾏)while(条件表达式){语句;}条件表达式为真,执⾏循环体;⼀旦条件表达式为假,停⽌循环。
分支结构知识点总结图表
分支结构知识点总结图表一、什么是分支结构1. 分支结构的概念分支结构是程序设计中的一种控制流程结构,通过条件判断来选择不同的执行路径。
2. 分支结构的作用分支结构可以根据条件的不同选择不同的执行路径,使程序具有选择性和灵活性。
二、分支结构的语法1. if语句if (条件) {// 条件成立执行的代码} else {// 条件不成立执行的代码}2. if...else if...else语句if (条件1) {// 条件1成立执行的代码} else if (条件2) {// 条件1不成立条件2成立执行的代码} else {// 条件1和条件2都不成立执行的代码}3. switch语句switch (表达式) {case 值1:// 表达式等于值1时执行的代码break;case 值2:// 表达式等于值2时执行的代码break;default:// 表达式不等于任何一个值时执行的代码break;}三、分支结构的应用1. 条件判断根据条件的不同选择不同的执行路径。
2. 多分支通过多个条件判断来选择不同的执行路径。
3. 嵌套分支在分支结构中嵌套其他的分支结构,形成多层次的选择结构。
四、分支结构的详细说明1. if语句if语句是一种最基本的分支结构,根据条件的成立与否选择不同的执行路径。
在if语句中,可以嵌套其他的if语句或者else if语句。
2. if...else if...else语句if...else if...else语句可以根据多个条件选择不同的执行路径,如果条件1成立则执行条件1的代码,如果条件1不成立条件2成立则执行条件2的代码,否则执行默认的代码。
3. switch语句switch语句是根据表达式的值来选择不同的执行路径,通过case关键字来判断表达式的值,并执行相应的代码块。
如果表达式的值与任何一个case的值都不匹配,则执行default的代码块。
五、分支结构的实例1. 简单的if语句if (score>=60) {System.out.println("及格了"); } else {System.out.println("不及格"); }2. 多条件的if...else if...else语句if (score>=90) {System.out.println("优秀");} else if (score>=80) {System.out.println("良好");} else if (score>=70) {System.out.println("一般");} else {System.out.println("不及格"); }3. switch语句switch (day) {case 1:System.out.println("星期一"); break;case 2:System.out.println("星期二"); break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期天");break;default:System.out.println("输入错误");break;}六、分支结构的注意事项1. 在if语句中要注意{}的使用,尽量都加上{},以免出现错误。
switch结构
在执行某一分支中的程序块时, break语句则退出switch语句则退出switch 在执行某一分支中的程序块时,遇 break语句则退出switch-case 结构,即程序控制转移至该结构中花括号之后的程序. 结构,即程序控制转移至该结构中花括号之后的程序.
C程序设计 6.1 6.1 Lifang 2008
5.switch 开关分支语句
开关分支是分支结构的另一种形式, 开关分支是分支结构的另一种形式,该语句执行时根据条件的取值 来选择程序中的一个分支. 分支语句形式如下: 来选择程序中的一个分支.switch 分支语句形式如下: switch(e) { case c1: s1; [break;] case c2: s2; [break;] …… case cn: sn; [break;] default: sn+1; [break;] }
C程序设计 6.2 6.2 Lifang 2008
几点注意: 几点注意: 1)各分支语句中的 break 语句作用是控制程序退出 ) 语句作用是控制程序退出switch 结构.若程序没有break语句,则程序将继续执行下面一个 语句, 结构.若程序没有 语句 case中的程序块. 中的程序块. 中的程序块
其中, 为整型类型,c1,均为整常量表 其中,e为整型类型,c1,均为整常量表 达式. es2 sn,sn+1是一个语句或程序块 s2…sn 是一个语句或程序块. 达式.s1,e sn,sn+1是一个语句或程序块. e=c1 1 e=c S1;break S1 其执行流程是: 的值, 其执行流程是:首先计算表达式 e 的值,然后 判断表达式的值与常量表达式c1,c2,cn中的哪 判断表达式的值与常量表达式c cn中的哪 e=c2 2 S2;break e=c S2 个值相等, 个值相等, …... …... ... ... 若与某个ci值相等,则从si程序块开始执行. 若与某个ci值相等,则从sin ci值相等 e=cn Sn;break e=cn si程序块开始执行. S 程序块开始执行 ci值相等 default后的 若不与任何一个 ci值相等, 则从default后的 其它(default) 其它(default) (default) ee=其它值相等, 则从default =其它(default) sn+1 程序块开始执行. 程序块开始执行. SSn+1 n+1
3.10C++ switch语句(多选分支结构)
switch语句是多分支选择语句,用来实现多分支选择结构。
它的一般形式如下:switch(表达式){case 常量表达式1:语句1case 常量表达式2:语句2...case 常量表达式n:语句ndefault:语句n+1}例如,要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现:.switch(grade).{.case 'A': cout<<"85~100\n";.case 'B': cout<<"70~84\n";.case 'C': cout<<"60~69\n";.case 'D': cout<<"<60\n";.default: cout<<"error\n";.}说明:1) switch后面括号内的“表达式”,允许为任何类型。
2) 当switch表达式的值与某一个case子句中的常量表达式的值相匹配时,就执行此case子句中的内嵌语句,若所有的case子句中的常量表达式的值都不能与switch表达式的值匹配,就执行default子句的内嵌语句。
3) 每一个case表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。
4) 各个case和default的出现次序不影响执行结果。
例如,可以先出现“default:…”,再出现“case 'D':…”,然后是“case 'A':…”。
5) 执行完一个case子句后,流程控制转移到下一个case子句继续执行。
“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。
在执行switch语句时,根据switch表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断。
第3章 分支结构
使用if-else语句 使用 语句
判断学生张三的成绩是否比学生李四的高? 判断学生张三的成绩是否比学生李四的高?
Scanner input = new Scanner(System.in); System.out.print("输入学生张三成绩 "); 输入学生张三成绩: 输入学生张三成绩 int score1 = input.nextInt(); System.out.print("输入学生李四成绩 "); 输入学生李四成绩: 输入学生李四成绩 int score2 = input.nextInt(); if(score1>score2) { System.out.println( "张三成绩比李四高 " ); 张三成绩比李四高! 张三成绩比李四高 } else{ System.out.println("张三成绩不比李四高 " ); 张三成绩不比李四高! 张三成绩不比李四高 }
使用else-if语句,实现对学生成绩的等级评定
int score = input.nextInt(); //考试成绩 考试成绩 if ( score >= 90 ) { System.out.println("优秀"); } else if (score >= 80 ) { System.out.println("良好"); } else if (score >= 70 ) { System.out.println ("中等"); } else if (score>=60){ System.out.println ("及格"); } else { System.out.println("不及格"); }
使用switch语句设计多分支结构程序 教案
记笔记
记忆
记忆
记忆
理解并记忆
理解动手
知识小结
1.switch表达式结果必须是一个整型(或字符)表达式
2.case后面则必须是一个整型(或字符)字面量。
3.建议每个语句组的最后都有break语句。
4.一个标号不带语句,它将于后面的标号共用语句。
5.switch语句不适用于范围判断
记忆
熟读
当执行了switch语句的break语句后,它使程序流程跳出switch语句,转而执行switch语句后面的语句。
如果switch语句中没有break语句,那么程序流程从匹配标号开始到switch语句块末的所有标号的语句均要被执行。
(三)使用switch设计多分支程序
例:输入字母A、B、C,输出对应的车型,将其转化成对应的switch结构。
3.使用switch语句的注意事项
二、讲解知识点
(一)switch语句的语法结构
switch语句的一般格式:
switch(表达式)
{case常量表达式1:
语句1
case常量表达式2:
语2
┇
case常量表达式n:
语句n
default:
语句n+1
}
(二)switch的运行过程
在C语言中,case后的常量表达式被称为标号,它标志一组语句。
3.会进行简单的多分支程序设计
情感
1.养成自学习惯2.提高学习兴趣3.树立学生参与意识
教学用途
■课前预习 ■课中讲解或活动 □课后辅导 其他
教学类型
■讲授型 □解答型 □答疑型 □实验型 其他
教学过程
环节
教师活动
学生活动
C语言程序设计基础教程 4.8、多分支结构switch的应用
‘1’
输出 “鸡”
‘2’
输出 “狗”
‘…’
其他
输出 “…” 输出 “error”
多分支结构switch的应用—相关知识
C语言
Switch语句说明
多个case可共用一组执行语句。 default的功能:当所有的常量表达式的值都不能和switch后的表
达式的值匹配时,就执行default后面的语句。
}
各常量表达式 值不能相等
switch语句的功能就是计算switch后面的括号内的表达式的值,并逐一和case后面的常量比较,等于哪个 常量表达式的值就执行对应语句,不等于任何case的值就执行default后面的语句。
多分支结构switch的应用—相关知识
C语言
Switch语句执行流程
year%12 ‘0’
任务分析
属相判断
—输入1个人的出生年份判断其属相。
年份%12余0 年份%12余1 年份%12余2 年份%12余3 年份%12余4 年份%12余5 猴 鸡 狗 猪 鼠 牛 年份%12余6 年份%12余7 年份%12余8 年份%12余9 年份%12余10 年份%12余11 虎 兔 龙 蛇 马 羊
可以用分支的嵌套实现,C语言又提供了另外一种方式
停止搜索
printf(“未发现匹配项。对不起!”);
停止搜索
多分支结构switch的应用—相关知识
C语言
整型或字符型
Switch语句
一般形式: switc常量表达式1: 语句1 break; case 常量表达式2: 语句2 break;
… …
case 常量表达式n: 语句n break; default: 语句n+1 break;
2.3.2-分支结构语句 switch
分支结构:switch语句
例. 请对输入的成绩判断等级([90,100],[80,89],[70,79],[60,69],[0,59]) 用switch语句实现. 思路:[pause]将分数除以10取整,再利用分支语句计算.
grade = input('请输入成绩'); grade = fix(grade/10) %取整 switch grade case {9,10}, disp('成绩优异') case {8}, disp('成绩优秀') case {6,7}, disp('成绩中等') otherwise, disp('没有及格') end
分支结构:swiห้องสมุดไป่ตู้ch语句
分析下列语句功能: name='abc'; % 根据name第1个字符串进行不同处理 switch name(1) case {'a','b','c','d','e','f','g','h'}, disp(['Hello, ', name]) otherwise, disp(['Welcome, ', name]) end 此段程序根据name字符数组第1个字符进行处理。
分支结构语句 switch
分支结构:switch语句
多分支语句, 基本用法: switch switch_expr case case_expr, 语句块1 case {case_expr1, case_expr2, case_expr3,...} 语句块2 otherwise, 语句块3 end switch_expr 一般为标量或字符串.
第三讲 分支结构(switch)
空格字符和“转义字符”都作为有效字符输入。 空格字符和“转义字符”都作为有效字符输入。
字符间没有空格) 如:abc ↙ (字符间没有空格) 若在两个字符间插入空格就不对了。 若在两个字符间插入空格就不对了。 如:a b c↙ (字符间有空格) ↙ 字符间有空格)
注意数值型数据与char型数据的混合输入 注意数值型数据与char型数据的混合输入
基本数据类型
——2.7.1 数组(存储方式) ——2.7.1 数组(存储方式)
int
a[0] a[1] a[2] a[3] a[4] arr[1][0] arr[1][1] arr[1][2] arr[0][0] arr[0][1] arr[0][2]
按行存储 a[5]; int arr[2][3];
scanf ("%d%d", &m, &n); scanf ("%c", &ch); 错误输入: 正确输入: 错误输入: 正确输入: 32 28 32 28a a
第3章 结构化程序设计
——3.1.2 数据输入
使用scanf函数应注意: 函数应注意: 使用 函数应注意
double型数据输入时,必须用%lf或%le格式 型数据输入时,必须用 或 格式 型数据输入时 为了减少不必要的输入量, 为了减少不必要的输入量,格式控制中尽量不要出现 普通字符, 普通字符,也不要使用 '\n' 、'\t' 等转义字符 输入数据不能规定精度 scanf (" %7.2f ", &a);是错误的 &a);是错误的 指定数据长度时,系统自动截取。 指定数据长度时,系统自动截取。 scanf(" %3d%3d ", &a, &b); 则当输入123456时 b← 则当输入123456时, a←123, b←456
switch语句实现多分支结构
switch语句实现多分⽀结构⼀般格式:switch(表达式【只能是整型表达式,C语⾔默认字符为整数,不能⽤浮点型和字符串型】){case 常量表达式1【不包含变量和函数调⽤的任何表达式,表达式值必须为整数或者字符】:语句序列1【后带有break时会从此处跳出switch循环,否则将会依次执⾏到语句结束】case 常量表达式2:语句序列2……case 常量表达式n:语句序列ndefault:语句序列n+1【表达式值若与case后任意⼀常量表达式值不等,则执⾏此语句,所以本语句可存在可不存在】} eg:#include<stdio.h>int main(){double s1,s2,s;char $;scanf("%lf%c%lf",&s1,&$,&s2);switch($){case'+':printf("%.2f\n",s1+s2);break;case'-':printf("%.2f\n",s1-s2);break;case'*':printf("%.2f\n",s1*s2);break;// 输出6.00case'/':printf("%.2f\n",s1/s2);break;// 0.67default:printf("运算符错误\n");break;}// 运算符错误return0;}【break使得实现了真正意义上的多分⽀,执⾏时op依次与case后的常量表达式⽐较,相等时开始执⾏本⾏,之后依次执⾏,直到遇见break跳出switch循环】在switch中不使⽤breakeg://输⼊⼀个正整数n(n<100000),请输出n的位数,并逆序输出n的每⼀位数字#include<stdio.h>#include<math.h>int main(){int n,len;scanf("%d",&n);len=(int)log10(n)+1;//计算n的位数printf("%d\n",len);switch(len){case5:printf("%d",n%10); n=n/10;case4:printf("%d",n%10); n=n/10;case3:printf("%d",n%10); n=n/10;case2:printf("%d",n%10); n=n/10;case1:printf("%d",n%10);}return0;}/*在switch的某些语句段中使⽤break计算某年某⽉的天数*/#include<stdio.h>int main(){int y,m,d;scanf("%d%d",&y,&m);switch(m){case4:case6:case9:case11:d=30;break;case2:{if(y%4==0&&y%100!=0||y%400==0)d=29;else d=28;break;}default:d=31;break;}printf("%d",d);}四则运算中讲究除数不能为0,所以fabs(y)>le-10(⼤于1*10(-10))continue是中断循环的本次执⾏,⽴即开始执⾏下⼀次循环;⽽break是⽴即结束所在循环。
分支结构-switch
Lesson08分支结构之switch...case语句课程要点switch...case语句课程准备新建一个名称为“switch-case”的项目,用来演示本节内容.课程内容1.语法格式switch(变量或者表达式的值){case值1:语句1;break;case值2:语句2;break;......case值n:语句n;break;default:语句n+1;break;}特点:用来处理多个条件(条件>2)的定值判断,类似于if...else if...else,但是是离散值的判断;switch语句一般都可以用if重写,但是if不一定能用switch重写。
例:将上一节练习题重写成switch...case语句//1.定义当前信号值,并输出int signalValue=5;Console.WriteLine("当前信号值:{0}",signalValue);//2.提示用户输入所选择的药品名称Console.Write("选择药品回复信号值,请输入药品名称:");string drugs=Console.ReadLine();//3.对用户选择的药品进行判断,信号值回复相应的点数switch(drugs){case"能量饮料"://等价于if(drugs==”能量饮料”)signalValue+=30;break;case"止痛药":signalValue+=75;break;case"肾上腺素":signalValue=100;break;case"全能医疗箱":signalValue=100;break;default:Console.WriteLine("非药品,不能回复信号值");break;}//4.选择药品后将回复后的信号值输出Console.WriteLine("信号值为:{0}",signalValue);Console.ReadKey();2.执行过程(1)程序顺序执行到switch处,计算出()中变量或表达式的值,用这个值依次跟每个case的值进行匹配;(2)如果匹配成功,则执行该case后面的代码,执行完成后,遇到break,跳出switch-case结构;(3)如果跟每个case所带的值都不匹配,就看该switch-case结构中是否有default存在,如果有,则执行default后的代码;(4)如果没有default,则该switch-case结构不执行,直接跳过执行后边的代码。
JavaScript知识点:分支结构(if、switch)+算法例题
JavaScript知识点:分⽀结构(if、switch)+算法例题if-else分⽀1.if条件应该是boolean类型的值或表达式2.如果条件不是Boolean,会进⾏⾃动转换以下⼏种情况会默认转换为 false:if(0)、if(0.0)if(NaN)、if(undefined)if("")、if(null)if(false)switch-case执⾏流程:1.解析变量或表达式中的值2.⽤解析出来的值与case后的值进⾏⽐较等值运⾏代码块3.如果值不相等,就执⾏default:后的代码块switch直落模式:两个或多个case之间没有任何操作代码,表⽰这两个或多个块要执⾏同样的代码块,如:switch(变量/表达式){case 值1:case 值2:case 值3:语句块;break;default:语句块;break;}以下是⼀些算法题的代码:(执⾏时需要改变函数的函数名调⽤每⼀个例题函数执⾏)1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF-8">5 <title>分⽀结构</title>6 </head>7 <body>8 <!-- 编写⼀个收银程序,根据商品的单价、购买的数量以及收款⾦额计算并输出应收⾦额和找零 -->9 <script type="text/javascript">10function getMoney(){11// 定义输⼊变量:商品单价price、购买的的数量count、12// 收款⾦额money13var price,cont,money;14//定义输出变量:消费⾦额sumPrice、找零coins15var sumPrice,coins;16// 弹框接受输⼊的值:单价、数量17 price = prompt("请输⼊商品单价:");18 count = prompt("请输⼊商品数量:");19// 计算商品总价20 sumPrice = price*count;21// 判断是否打折22if(sumPrice>=500){23 sumPrice *=0.8;24 alert("您消费到达500,享受8折优惠!");25 }26 alert("您共消费:"+sumPrice+"元");27// 接受付款⾦额28 money = prompt("请付钱:");29//判断付款⾦额是否⼤于消费⾦额30if(money >= sumPrice){31// 计算找零32 count = money - sumPrice;33 alert("找您:"+count);34 }35else36 alert("钱不够!");3738 }39 getMoney();//函数调⽤⼝40 </script>41 <script type="text/javascript">42//1. 通过弹框输⼊年⽉⽇,判断该⽇是这⼀年的第多少天?43function ymd(){44// 定义输⼊变量45var year = prompt("请输⼊年份:");46var month = prompt("请输⼊⽉份:");47var date = prompt("请输⼊⽇期:");48// 通过⽉份判断49switch(Number(month)){50case 1:month =0;break;51case 2:month=31;break;52case 3:month=59;break;53case 4:month=90;break;54case 5:month=120;break;55case 6:month=151;break;56case 7:month=181;break;57case 8:month=212;break;58case 9:month=243;break;59case 10:month=273;break;60case 11:month=304;break;61case 12:month=334;break;62 }63 date=month + Number(date);64// 判断输⼊年份是否是闰年65if((year%4==0 && year%100!=0) || year%400==0){66if(month>=2)67 date +=1;68 }69 console.log("今天是今年的第:"+date+"天");70 }71// 2.模拟电话银⾏按键程序72function bank(){73// 通过switch选择系统功能74var press = prompt("请输⼊数字选择功能(1.查询余额2.取款3.转换4.退出系统):"); 75switch(Number(press)){76case 1:seek();break;77case 2:draw();break;78case 3:change();break;79case 4:exit();break;80 }81function seek(){82 console.log("余额查询中……");83 }84function draw(){85 console.log("取款进⾏中……");86 }87function change(){88 console.log("转账进⾏中……");89 }90function exit(){91 console.log("退出系统,谢谢使⽤!");92 }93 }94// 3.买保险95// 已婚都可以买96// 未婚男<25不买97// 未婚⼥<22不买98function insure(){99// 弹框接受员⼯信息:婚否、性别、年龄100var isMarry = prompt("是否已婚(Y|N):");101var sex = prompt("请输⼊性别(M|W):");102var age = prompt("请输⼊年龄:");103if(isMarry=="Y"){104 console.log("公司为您提供保险!");105 }else if ((sex=="M" &&age<25)||(sex=="W" && age<22)) {106 console.log("不满⾜公司提供保险条件!");107 }else{108 console.log("满⾜公司提供保险条件!");109 }110 }111// 4.某超市促销活动112// 会员总价>100 ⼋折 <100 9折113// ⾮会员>100 九折 <100 不打折114function superMk(){115//弹框询问是否是会员(0|1)116//弹框询问商品总价格117//定义变量:是否会员isVIP、价格price118var isVIP = prompt("是否是会员(0|1):");119var price = prompt("商品总价格为:");120// 判断是否是会员121if(isVIP==1){122if(price>100){123 price = price *0.8;124 console.log("您是会员且购买⾦额超过100可以打⼋折");125126 }else{127 price = price * 0.9;128 console.log("您是会员可以打九折!");129 }130 }else if(price>100){131 console.log("您购买⾦额超过100可以打九折!");132 price = price *0.9;133 }134 console.log("您需要付款:"+price+"元");135 }136// 5.计算1-100之间的和、乘积137function sumPro(){138var sum=0,product = 1;139for(var i=1;i<=100;i++){140 sum += i;141 product *= i;142 }143 console.log("和为:"+sum,"乘积为:"+product); 144 }145// 6.九九乘法表146// 1*1=1147// 1*1=1 1*2=2148function multTable(){149for (var i = 1; i <= 9; i++) {150for (var j = 1; j <=i; j++) {151var mult = i*j;152 document.write(j + "*" + i + "=" + mult); 153154 }155 document.write("<br/>")156 }157 }158 multTable();//函数调⽤⼝159160 </script>161 </body>162 </html>。
信息技术——用switch语句实现多分支结构(教案)
教学阶段教师活动学生活动设计意图实践操作【实践二】仿照week.java程序,设计“宽带套餐资费查询系统”。
功能要求:通过输入不同的序号,可查询对应宽带套餐所提供的服务细节,其中包含以下:带宽、月使用费、限制使用时间。
展示学生程序。
小结:当要查询信息的每种情况均可用数字表示时,case后面表达式的值(n)可直接使用数字。
【实践三】设计模拟“网速测试器”软件。
功能要求:输入一个网速值时,显示出对应的网络坐骑名称。
分析讲解:1.用switch语句;2.如何确定case后面表达式的值(n)?在不同数据区间的网速所对应的坐骑名称各不相同。
M → n的转化: n= M/128小结:如果是一个数值区间对应一种情况时,就需要利用数学变换得到case后面表达式的值(n)。
学生填写《学习记录单》,编辑并输入代码,调试并运行程序学生思考回答教师讲解学生思考填写《学习记录单》学生编制程序代码。
模仿案例程序,编写代码,解决实际问题北京网通宽带资费套餐收费服务标准序号套餐名称带宽使用费(元/月)限制使用时间(小时/月)1 激情宝典30 1M 30 202 激情宝典55 1M 55 303 激情宝典60 1M 60 404 激情宝典65 1M 65 505 自由宝典138 1M 138 包月不限时长6 自由宝典188 2M 188 包月不限时长序号网速M(KB/秒)坐骑名称1 0~128 摩托车2 128~256 汽车3 256~512 飞机4 512~1024 火箭5 1024以上UFO。
第3讲Java语言基础(4)分支结构程序设计switch语句应用
6.
mm = sc.nextInt();
switch(mm) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: dd=31; break; case 4: case 6: case 9: case 11: dd=30; break; case 2: if(yy%4==0&&yy%100!=0||yy%400==0) dd=29; else dd=28; break; default: System.out.println("input error"); break; } System.out.println(yy+"年"+mm+"月"+dd);
switch语句其一般形式为:
switch(表达式){ case常量1: 语句1;break; case常量2: 语句2; break; ...... case常量n: 语句n; break; default : 语句n+1; }
注意以下几点:
• switch之后括号内的表达式只能是整型(byte、short、char 和int),不能是长整型或其他任何类型。 • 在case后的各常量表达式的值不能相同,否则会出现错误。 • 在case后,允许有多个语句,可以不用{}括起来。也可作为 复合语句用{}括起来。 • case和default语句的先后顺序可以变动,而不会影响程序执 行结果。但把default语句放在最后是一种良好的编程习惯 • default子句可以省略。 • break语句用来在执行完一个case分支后,使程序跳出 switch语句,即终止switch语句的执行。
chap03 分支结构
输入时,操作数和运算符之间不能出现空格(' ')
字符输入函数getchar()
输入一个字符 char ch; ch = getchar( );
char ch; ch = getchar(); putchar (ch); putchar (‘?');
PTA训练
本题目要求一元二次方程的根,结果保留2位小数。 输入格式: 输入在一行中给出3个浮点系数a、b、c,中间用空格分开。 输出格式: 根据系数情况,输出不同结果: 1)如果方程有两个不相等的实数根,则每行输出一个根,先大后 小; 2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输 出一个根,先输出虚部为正的,后输出虚部为负的; 3)如果方程只有一个根,则直接输出此根; 4)如果系数都为0,则输出"Zero Equation"; 5)如果a和b为0,c不为0,则输出"Not An Equation"。
字符输出函数putchar()
a
输出一个字符
a?
putchar(输出参数); 只能处理单个字符的输入和 输出,调用一次函数,只能
字符常量或字符变量 输入或输出一个字符。
3.2.4 逻辑运算
char ch; printf("Enter a character: "); ch = getchar(); if ((ch >= ’a’ && ch <= ’z’) || (ch >= ’A’ && ch <= ’Z’))
条件的表示
例3-6 写出满足下列条件的C表达式。 ch 是空格或者回车。 ch == ' ' || ch == '\n' number是偶数。 number % 2 == 0 year 是闰年,即 year 能被 4 整除但不能被
C语言程序设计(switch多分支选择结构)
C语言程序设计(switch多分支选择结构)3.1.4switch多分支选择结构使用多分支结构的应用中有一类问题是通过同一个表达式的不同取值来决定执行不同语句,该类问题如果采用if…elseif…else结构时不够简洁,C中提供了另外一种多分支结构来实现类似的问题,该多分支结构为switch多分枝选择结构。
其形式如下:switch(表达式) {case常量表达式1:语句1;[break]case常量表达式2:语句2;[break]…case常量表达式n:语句n;[break]default:语句n+1;}其语义是:计算switch后面表达式的值,逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,如果遇到break语句,则跳出switch结构,即跳过所有的case语句(包括default)继续执行该结构后面的语句,如果没有break语句,则不再判断后面case后的条件,直接执行下面所有case 后的语句,直到碰到break语句为止,跳出switch结构执行后面的语句。
如果表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句,然后执行该结构后的语句。
【例3-8】编写程序,将1至7中的任意一个数字转化成对应的英文星期几的前三个字母,如1转化为Mon,7转化为Sun等。
该问题的解决步骤如下:(1)输入1至7的任意一数存入变量;(2)根据变量的值执行相应的输出语句,该变量需要被判断7次。
参考程序如下:/*程序名:3_8_1.c*//*功能:将1至7中的任意一个数字转化成对应的英文星期几的前三个字母*/#includeint main(){int a;printf("input integer number:");scanf("%d",&a);switch(a){/*对表达式a做多次判断,根据不同的条件做不同的语句*/case1:printf("Mon\n");break;/*break的作用是跳出该结构*/case2:printf("Tue\n");break;case3:printf("Wed\n");break;case4:printf("Thu\n");break;case5:printf("Fri\n");break;case6:printf("Sat\n");break;case7:printf("Sun\n");break;default:printf("error\n");/*输入的不是0至7的整数时执行*/}return0;}与该程序等价的if…else if…形式的参考程序如下:/*程序名:3_8_2.c*//*功能:将1至7中的任意一个数字转化成对应的英文星期几的前三个字母*/#includeint main(){int a;printf("input integer number:");scanf("%d",&a);if(a==1)printf("Mon\n");else if(a==2)printf("Tue\n");else if(a==3)printf("Wed\n");else if(a==4)printf("Thu\n");else if(a==5)printf("Fri\n");else if(a==6)printf("Sat\n");else if(a==7)printf("Sun\n");else printf("error\n");return0;}注意:(1)在case后的各常量表达式的值不能相同,switch后表达式的数据类型只能是整型或字符型,否则会出现错误;(2)在case后,允许有多个语句,可以不用花括号括起来;(3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果;(4)default子句可以省略不用;(5)多个case可共用一组语句。
C语言第3章
3.3.3 if语句的嵌套
注意: 1.else子句不能作为语句单独使用,它必须与if配对使用。 2.为使程序结构清晰、层次分明,常常采用程序行缩进的书 写格式,if 和其对应的else写在一列上。但,书写格式不能 代替逻辑结构。 3.if 和 else 的配对关系。一个 else 总是与其上面距它最近 的,并且没有其它 else 与其配对的 if 相配对。
3.2 关系运算和逻辑运算
3.2.1 关系运算
运算符 含义 优先级 < 小于 <= 小于等于 6 > 大于 >= == != 大于等于 等于 不等于 7
3.2.2 逻辑运算
运算符 含义 优先级 ! 逻辑非 2 && 逻辑与 11 || 逻辑或 12
关系表达式
关系表达式是使用关系运算符将两个表达式(算术表达式,关系表达式, 逻辑表达式,赋值表达式等)连接起来的式子。 关系表达式的值:关系表达式成立,即为“真”,C语言中用1表示; 关系表达式不成立,即为“假”,C语言中用0表示。 对1.0/3.0*3.0==1.0,计算机判 为假改写为:fabs(1.0/3.0*3.0字符比较按ASCII码进比较 1.0)<1e-5; 对浮点数判断是否相等时,由于计算机存储的误差,会出现错误的结果。 应避免对两个实数表达式作“相等”或“不相等”的判别。 例:表达式5>2>7>8在数学上是不允许的。在C语言中是允许的,按自左而 右求解。5>2值为1;1>7值为0;0>8值为0。表达式的值为0。
例:a&&b&&c :a为真才判别b,a和b同时为真才判别c a||b||c:只要a为真,就不再判断b和c 例:(m=a>b)&&(n=c>d) 当a=1,b=2,c=3,d=4时,m=0,n维持原值
分支结构(ifelse,switch选择判断)
分⽀结构(ifelse,switch选择判断)分⽀结构Note:switch中⽀持的类型为byte,short,int,char,String(JDK7+),枚举共6种,不⽀持浮点型1.if结构if:如果格式:if(布尔表达式){//条件成⽴逻辑代码块}import java.util.Scanner;public class Test5{public static void main(String [] args){// 赵四两门成绩 java成绩⾳乐成绩// 如果java成绩⼤于85 并且⾳乐成绩⼤于75 奖励苹果8袋// 或者// 如果java成绩等于100 并且⾳乐成绩⼤于 65 奖励苹果8袋Scanner input = new Scanner(System.in);System.out.println("请输⼊你的java成绩");int javaScore = input.nextInt();System.out.println("请输⼊你的⾳乐成绩");int musicScore = input.nextInt();if((javaScore > 85 && musicScore > 75) || (javaScore == 100 && musicScore > 65)){System.out.println("奖励苹果8袋");}// 在程序结束之前判断当前是否获得奖励System.out.println("程序结束");}}2.if - elseelse :否则要求:else不能单独出现,必须结合if或者其他的选择结构格式:if(布尔表达式){//条件成⽴执⾏的逻辑代码}else{//以上条件不成⽴的其他任何情况都会执⾏的代码}package com.qfedu.test1;import java.util.Scanner;public class Test2 {public static void main(String[] args) {// if -else// else:否则不能单独出现必须结合 if 或者其他的选择结构// 单⾏注释快捷键选中需要被注释的代码 ctrl + / 取消注释也是⼀样的操作// ctrl + d删除选中内容// if(布尔类型的表达式) {//// }else {//// }Scanner input = new Scanner(System.in);System.out.println("请输⼊你的java成绩");int javaScore = input.nextInt();System.out.println("请输⼊你的⾳乐成绩");int musicScore = input.nextInt();if((javaScore == 100 && musicScore > 65) || (javaScore >= 85 && musicScore >= 75)) {System.out.println("奖励苹果8袋");}else {System.out.println("继续努⼒");}}}3.多重if适⽤场景:多重if⽤于处理某个值处于某个连续的区间的情况else - if不能单独出现,必须结合if多重if中的else - if没有上限,写多少都可以多重if中的else可写可不写,根据需求是否书写package com.qfedu.test1;import java.util.Scanner;public class Test4 {public static void main(String[] args) {// 根据成绩评定等级// >= 90 优秀// >= 80 良好// >= 70 中等// >= 60 及格// < 60 差// 以上需求我们可以使⽤多重if来实现// 多重if通常⽤于处理某个值处于某个连续的区间的情况// 多重if编写条件必须是有顺序的升序或者降序Scanner input = new Scanner(System.in);System.out.println("请输⼊你的成绩");int score = input.nextInt();if(score >= 90) {System.out.println("优秀");}else if(score >= 80) {System.out.println("良好");}else if(score >= 70) {System.out.println("中等");}else if(score >= 60) {System.out.println("及格");}else {System.out.println("继续努⼒");}}}4.嵌套if概念:if选择结构中继续嵌套if选择结构,if、if - else、多重if之间可以互相嵌套,没有上限适⽤场景:通常⽤于处理某些关联关系的条件情况,例如先符合条件A,才有机会符合条件B package com.qfedu.test1;import java.util.Scanner;public class Test6 {public static void main(String[] args) {// 举⾏百⽶跑步⽐赛跑步时间⼩于 10 秒的话进⼊决赛// 根据性别分别进⼊男⼦组或者⼥⼦组// 需求改进// 为了公平⽐赛男⽣要求10秒可以进⼊决赛⼥⽣12秒可以进⼊决赛Scanner input = new Scanner(System.in);System.out.println("请输⼊你的跑步时间");double time = input.nextDouble();System.out.println("请输⼊你的性别");String sex = input.next();// if(time < 10) {//// 男⽣// if(sex.equals("男")) {// System.out.println("恭喜你进⼊男⼦组");// }// }else if(time < 12) {// if(sex.equals("⼥")) {// System.out.println("恭喜你进⼊⼥⼦组");// }// }// if((time < 10 && sex.equals("男"))) {// System.out.println("恭喜进⼊男⼦组");//// } else if (time < 12 && sex.equals("⼥")) {// System.out.println("恭喜进⼊⼥⼦组");// }if(sex.equals("男")) {if(time < 10) {System.out.println("恭喜进⼊男⼦组");}}else if(sex.equals("⼥")){if(time < 12) {// alt + ⽅向键上下键System.out.println("恭喜进⼊⼥⼦组");}}}}5.switch结构switch : 开关case:情况break:打破、折断default:默认格式:switch(变量|表达式){case 值1:逻辑代码1;case 值2:逻辑代码2;case 值n:逻辑代码n;default:未满⾜时的逻辑代码; }使⽤场景:switch通常⽤于处理等值的情况类型要求:⽀持的数据类型:byte,short,int,char,String(JDK7+),枚举package com.qfedu.test1;import java.util.Scanner;public class Test7 {public static void main(String[] args) {// switch// ⽀持的数据类型 byte short int char String(JDK7+) 枚举 // 需求:学校举⾏尬舞⽐赛// ⼀等奖夏令营1天// ⼆等奖夏令营1天// 三等奖夏令营1天// 四等奖夏令营1天Scanner input = new Scanner(System.in);System.out.println("请输⼊你的名次");int num = input.nextInt();// if(num == 1) {// System.out.println("夏令营1天");// }else if (num == 2) {// System.out.println("优盘1个");// }else if(num == 3) {// System.out.println("笔记本1个");// }else if(num == 4){// System.out.println("⼝头表扬⼀次");// }// switch(num) {// case 1:// System.out.println("夏令营1天");// break;// case 2:// System.out.println("优盘1个");// break;// case 3:// System.out.println("笔记本1个");// break;// case 4:// System.out.println("⼝头表扬⼀次");// break;// }//switch(num) {case 1:case 2:case 3:case 4:System.out.println("夏令营1天");// break也不是必须存在的根据需求是否书写不书写的效果将⼀直执⾏到书写break的case停⽌ // case块书写上break 表⽰执⾏完当前case块代码跳出当前case块break;// default不是必须存在的根据需求// 位置也不是固定的但是要求必须写在最后// default也要加上breakdefault:System.out.println("继续努⼒");break;}}}6.局部变量概念:声明在函数内部的变量要求:1.必须先赋值才能使⽤2.定义位置:定义在⽅法体内部3.多个变量,在重合的作⽤范围内,不能出现重名(命名冲突)4.作⽤范围:在定义的代码块以内可以访问5.存放的位置:局部变量存在栈中6.⽣命周期:随着⽅法的⼊栈(压栈)⽽⽣效,随着⽅法的出栈(弹栈)⽽死亡package com.qfedu.test1;// int a = 20; 不能定义在类以外public class Test9 {// int s = 20; 在这⾥定义可以编译通过但是不是局部变量(全局变量)public static void main(String[] args) {int a;int b = 10;System.out.println(b);// System.out.println(a); 局部变量必须先赋值才能使⽤if(b > 5) {int c = 20;System.out.println(c);// System.out.println(d); 不能访问d 因为超出范围并且 d在后续的代码中定义不能提前访问if(b > 6) {int d = 20;System.out.println(c);}// System.out.println(d); // 超出范围}// System.out.println(c); 超出范围}}6.每⽇问题1.if(表达式) 表达式的最终值为什么类型?2.多重if⽤来处理什么样的情况?3.switch中break的作⽤?4.switch⽀持的数据类型?5.switch中default的作⽤?6.“switch(这⾥的值为布尔类型的)”,这句话对吗?为什么?7.switch和多重if的区别?8.switch中的default和多重if中的else可以不写吗?9.⽐较字符串的内容使⽤什么⽅法?10.case后边的值可以有重复的吗?⽐如有两个 case 2: ……case 2:……6.解答1.if(表达式) 表达式的最终值为什么类型? 布尔2.多重if⽤来处理什么样的情况? 值处于连续区间的情况3.switch中break的作⽤? 跳出case块4.switch⽀持的数据类型? byte short int char String(JDK7+) 枚举5.switch中default的作⽤? 我们定义的case块之外的其他任何情况6.“switch(这⾥的值为布尔类型的)”,这句话对吗?为什么? 不对,因为第四题7.switch和多重if的区别? switch⽤于处理等值的情况多重if⽤于处理值处于区间的情况8.switch中的default和多重if中的else可以不写吗? switch中的default和多重if中的else 可以不写都⽤于处理定义条件以外的情况9.⽐较字符串的内容使⽤什么⽅法? equals10.case后边的值可以有重复的吗? ⽐如有两个 case 2: ……case 2:…… 不能,case后的值不能重复,否则编译不通过。
8.C语言之分支结构(3)
大家好!今天我们来学习另外一种分支结构switch结构。
每一个if语句都只能在两种分支情况进行选择,如果对于某一个条件,存在多种分支的情况用if语句或者多重嵌套的if语句结构来实现,当嵌套的分支较多时,程序会变得复杂冗长,可读性降低。
为了解决这个问题,C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。
switch语句switch语句是一种多路分支开关语句,语句的一般形式为:switch(<表达式>){case<常量表达式1>:语句序列1;case<常量表达式2>:语句序列2;……..case<常量表达式n>:语句序列n;default:语句序列(n+1);}其中常量表达式的值必须是整型、字符型或者枚举类型,各语句序列允许有多条语句,不需要将语句序列用一对花括号括起来,<表达式>可以为任意表达式。
switch语句一般形式的语法规则是:先计算<表达式>的值,再从上到下判断与哪个<常量表达式>的值相等,如果<表达式>的值等于<常量表达式i>的值,则从语句序列i开始执行,直到语句序列(n+1)为止;若<表达式>的值不等于任何一个<常量表达式>的值,则执行default后面的语句序列(n+1)显然,可以利用switch语句的程序,也可以用if语句的结构来实现,但如果嵌套的层次较多,会降低程序的可读性,所以,一般不采用结构来表达。
下面我们来看一个程序:某班级进行周末旅行,有五种情况:晴天去登山,有风无雨郊游,下雪堆雪人,下雨不举行班级活动,其他天气参观博物馆。
我们分别用1、2、3、4代表晴天、有风无雨、下雪、和下雨这四种天气。
程序如下:#include<stdio.h>int main(){int W;printf("1.晴天,2.有风无雨,3.下雪,4.下雨\n");printf("请输入天气对应的序号:\n");scanf_s("%d", &W);switch (W){case 1:printf("晴天------活动内容:登山\n");break;case 2:printf("有风无雨-------活动内容:郊游\n");break;case 3:printf("下雪-------活动内容:堆雪人\n");break;case 4:printf("下雨---------活动内容:参观博物馆\n");break;default:printf("其他天气-------活动内容:参观博物馆\n");break;}return 0;}我们来看一下这程序的注意点:第一:在case后面要有一个空格,例如case1和case 1,前一种情况编译器不会识别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
break语句可以终止后续:
2013-6-24
基本数据类型
——2.7 数组和指针初步
基本数据类型
——2.7.1 数组
组成数组的变量称为数组的元素. 1. 数组的定义: 数据类型 数组名 [元素个数] 如: int a[5]; 5个整型数组成的一维数组 float x[10]; char s[12]; int arr[2][3]; 两行三列的二维数组 数组元素的下标从0开始,且必须是整型的常量和变量. int a[5]; a[0] a[1] a[2] a[3] a[4] int arr[2][3]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
——2.7.3 指针和数组的简单用法
指向一维数组的指针
内容 数组元素 a[1] a[i]
int a[10], *p;
第i个元素的地址:
数组名代表一个地址,它的值是数 p 组首元素的地址 p=a; p=&a[0]; &a[i] a+i 是距数组a的基地址的第i个偏移 p+i a[i] *(a+i) *(p+i)
例如: 先定义,后赋值: int a,b,*p1,*p2; p1=&a; p2=&b; 定义时赋初值: int a, *prt=&a;
基本数据类型
——2.7.2 指针变量程序举例
[例] 利用指针指向两个变量。
p1 100 a b
main( ) p2 200 {int a,b; int *p1,*p2; a=100;b=10; p1=&a; p2=&b; printf ("%d,%d\n",a,b); printf("%d,%d\n",*p1**p2,*p1+*p2); }
指向一般变量的指针
main( ) { int x,y,*p1=&x ,*p2=&y; p2=p1; /* 让p2和 p1同时指向x */ x=100; y=200; printf(“ x=%d\n”,*p1); printf(“ y=%d\n”,*p2); }
p1 p2 100 200
x y
基本数据类型
基本数据类型
——2.7.1 数组(存储方式)
int
a[0] arr[0][0] arr[0][1] arr[0][2] a[1] a[2] arr[1][0] arr[1][1] arr[1][2]
按行存储 a[5]; int arr[2][3];
a[3]
a[4]
数组名代表了数组首地址(第一个元素的地址),是一 个常量,用a 或 &a[0]表示。
基本数据类型
——2.7.1 数组(初化)
在定义的同时,可以对数组进行初始化,
或
一维数组,如: int b[5]={1,2,3,4,5}; int b[ ]={1,2,3,4,5};
二维数组,如:
或
int a[2][3]={{1,3,5},{2,4,6}}; int a[2][3]={1,3,5,2,4,6};
2013-6-24
加入break以后,case语句出现的次序并不影响执行结果。 无break时, case语句出现的次序影响运行结果
[例] 根据成绩等级打出成绩范围.
main() 流程图如下: { grade char grade; printf("Enter your grade\n"); 输入为 B 'A' 'B' 'C' 'D' default scanf("%c",&grade); switch(grade) 输出为 70~84 输出 { 输出 输出 输出 输出 "85~100" "<60" "70~84" "60~69" case 'A': printf("85~100\n"); break; "error" case 'B': printf("70~84\n"); break; case 'C': printf("60~69\n"); break; case 'D': printf("<60\n"); break; default: printf("error\n"); } }
a[9]
第i个元素的值:
2000 2002
1000
p
地址
指针变量
基本数据类型
——2.7.2 指针
2030 x
p
&x(1000)
10
1. 指针变量的定义 <类型标识符> * <变量名> ; 例如: int *p1, *p2; 2. 指针变量的赋值(指针指向某个对象) &:取变量的地址 x的地址表示为&x 指针变量=&变量 *:间接访问变量的值 *p访问指针p所指的变量
C 语言程序设计
选择结构程序设计
3.2.2 开关选择语句(switch)
switch语句是多分支选择语句,也叫开关语句或者 选择语句。 switch语句的一般形式
switch (表达式) { case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 …… case 常量表达式n: 语句序列n default : 语句序列n+1 }
句, 功能: 使其退出; 否则会自动执行其后各语句组。
– –
计算表达式的值,与常量表达式的值比较,等于第i个值 时,顺序执行语句序列i、i+1、 …、 n+1 若与所有常量表达式值都不相等,执行语句序列n+1。
2013-6-24
3.2.2 开关选择语句(switch)
例如: switch (a) { case 5: printf(“&"); break; case 2: printf(“#"); break; default: printf("$"); break; } 当a等于5,输出:&#$ 当a等于2,输出:#$ 当a是其他值,输出:$ 当a等于5,输出:& 当a等于2,输出:# 当a是其他值,输出:$
基本数据类型
——2.7.2 指针
内存单元 地址 内容
1000 1002 1004 20 1 155
变量 直接访问:通过变量名访问
x y z
int x = 20, y = 1, z = 155; printf("%d", x;) 间接访问:通过另一个变量访问
把变量的地址放到另一变量中 使用时先找到后者 再从中取出前者的地址
当a等于5,输出:&#$ 当a等于2,输出:#$ 当a是其他值,输出:$
2013-6-24
3.2.2 开关选择语句(switch)
switch语句是多分支选择语句,也叫开关语句或者 选择语句。 switch语句的一般形式
switch (表达式) { case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 …… case 常量表达式n: 语句序列n default语句: 若执行完其中一个语句组后, 加 break 语 语句序列n+1 } break :
2013-6-24
求解简单表达式
输入一个形式如“操作数 运算符 操作数” 的四则运算表达式,输出运算结果。
例如: 输入:3.1+4.8 输出:7.9
思路: • 设运算数x和y为float型变量, 运算符op为char型 变量; • 变量值的输入scanf • 根据op的值(为'+'、'-'、'*'、'/')进行x和y的相 加、相减、相乘、相除运算(选择分支); • 还要考虑到输入字符不是+、-、* 或 / 时的情况
2013-6-24
第3章 结构化程序设计
——3.1.2 数据输入
使用scanf函数应注意:
注意char型数据的输入
scanf(“%c%c%c“,&c1,&c2,&c3); 在执行函数时应该连续输入3个字符,中间不要有空格。
空格字符和“转义字符”都作为有效字符输入。
如:abc ↙ (字符间没有空格) 若在两个字符间插入空格就不对了。 如:a bc↙ (字符间有空格)
注意数值型数据与char型数据的混合输入
scanf ("%d%d", &m, &n); scanf ("%c", &ch); 错误输入: 正确输入: 3228 3228a a
第3章 结构化程序设计
——3.1.2 数据输入
使用scanf函数应注意:
double型数据输入时,必须用%lf或%le格式 为了减少不必要的输入量,格式控制中尽量不要出现 普通字符,也不要使用 '\n' 、'\t' 等转义字符 输入数据不能规定精度 scanf (" %7.2f ", &a);是错误的 指定数据长度时,系统自动截取。 scanf(" %3d%3d ", &a, &b); 则当输入123456时, a123, b456
功能:
– –
计算表达式的值,与常量表达式的值比较,等于第i个值 时,顺序执行语句序列i、i+1、 …、 n+1 若与所有常量表达式值都不相等,执行语句序列n+1。