版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三选择结构程序设计第五讲多分支switch语句C语言程序设计任务驱动式教程if选择语句多分支switch语句选择结构综合应用目录问题导入这是一简单计算器,它可实现“+、-、*、/”四项功能。除了if语句还有其他语句可以实现多分支结构吗?if选择语句-
多分支switch语句任务五请注意switch(表达式){case
常量表达式1:[语句序列1;][break;]
case
常量表达式2:[语句序列2;][break;]
……
case
常量表达式n:[语句序列n;][break;]
default:语句序列n+1;}方括号括起来的可省退出当前switch语句整型或字符型整型或字符型,常量值不能重复(1)语法格式if选择语句-多分支switch语句任务五(2)执行流程if选择语句-
多分支switch语句任务五(3)执行流程首先计算switch后面表达式的值,再依次与每一个case后面的常量表达式的值进行比较,若有相等的情况,则以该case为入口,执行相应的语句序列。若相应的语句序列后面有break,则程序跳出switch选择结构,执行switch选择结构后面的语句;若相应的语句序列后面没有break,则执行下一个case后面的语句序列。若所有case后面的常量表达式的值没有与switch后面表达式的值相等的情况,则执行default后面的语句序列。if选择语句-多分支switch语句任务五switch后的“表达式”只能是整形表达式或字符型表达式。
说明2intx=6;
switch(x)charm=‘a’;
switch(m)整形表达式字符型表达式case后的常量表达式只起到标号作用,找到匹配的入口。intx=3;
switch(x-1){case2:……case3:…………}x-1与2相匹配
说明1if选择语句-多分支switch语句任务五
说明3case后有多条语句时,可以省略大括号{}
intx=3;
switch(x-1){case2:y=sqrt(3+z);printf(“%d\n”,y);break;……}多条语句,省略{}
说明4case后无“break;“语句,程序将继续执行。……scanf("%c",&ch);
switch(ch){case‘A’:printf(“成绩>=90\n”);case‘C’:printf(“成绩>=60\n”);……}if选择语句-多分支switch语句任务五
说明5
说明6case后有“break;“语句,程序跳出switch语句。……scanf("%c",&ch);
switch(ch){case‘A’:printf(“成绩>=90\n”);break;case‘C’:printf(“成绩>=60\n”);break;……}各case语句先后顺序,不影响程序的执行结果。……scanf("%c",&ch);
switch(ch){case‘C’:printf(“成绩>=60\n”);break;
case‘A’:printf(“成绩>=90\n”);break;……}if选择语句-多分支switch语句任务五
说明7多个case语句共用一组语句。……scanf("%d",&month);
switch(month){case1:
case2:case3:printf(“春季\n”);break;……}month与1、2、3相匹配时,都输出“春季”if选择语句-多分支switch语句任务五
应用1利用switch编程,实现“+、-、*、/”简单计算器。switch(表达式)中的“表达式”
如何设计?设char型变量op代表不同的运算,根据op的不同值形成多分支。如:switch(op
)case后的“常量表达式”
如何表示?
常量表达式可用‘+’、‘-’、‘*’、‘/’表示
如:case‘+’:
case‘-’:【提示】if选择语句-多分支switch语句任务五
应用1利用switch编程,实现“+、-、*、/”简单计算器。#include<stdio.h>voidmain(){
floatx,y;
charop;printf("请输入运算式,如:1.6-0.3:");scanf("%f%c%f",&x,&op,&y);
switch(op){case'+':printf("%0.1f+%0.1f=%0.1f\n",x,y,x+y);break;
case'-':printf("%0.1f-%0.1f=%0.1f\n",x,y,x-y);break;
case'*':printf("%0.1f*%0.1f=%0.1f\n",x,y,x*y);break;case'/':printf("%0.1f/%0.1f=%0.1f\n",x,y,x/y);break;
default:printf("error!\n");}}#include<stdio.h>voidmain(){
floatx,y;
charop;printf("请输入运算式,如:1.6-0.3:");scanf("%f%c%f",&x,&op,&y);
if(op=='+')printf("%0.1f+%0.1f=%0.1f\n",x,y,x+y);
elseif(op=='-')
printf("%0.1f-%0.1f=%0.1f\n",x,y,x-y);
elseif(op=='*')
printf("%0.1f*%0.1f=%0.1f\n",x,y,x*y);
elseif(op=='/')
printf("%0.1f/%0.1f=%0.1f\n",x,y,x/y);elseprintf("error!\n");}if选择语句-多分支switch语句任务五
应用2根据学生考试成绩score的值判定考试等级。判定标准如下表所示。成绩(score)等级score>=90优秀(A级)80<=score<90良好(B级)70<=score<80中等(C级)60<=score<70及格(D级)score<60不及格(E级)if选择语句-多分支switch语句任务五
应用2根据学生考试成绩score的值判定考试等级。判定标准如下表所示。#include<stdio.h>voidmain(){double
_____;printf("请输入学生成绩:");scanf("%____",&______);
switch((int)(score/10))//分析switch后面的表达式为什么写成(int)(score/10)?{case10:
case__:printf(“____________________");break;
case__:printf(“____________________");break;
case__:printf(“____________________");break;
case__:printf(“____________________");break;
default:printf(“____________________");}}程序运行结果思考:将程序代码中的break去掉,会得到怎样的运行结果,试分析其原因。if选择语句-多分支switch语句任务五
应用2根据学生考试成绩score的值判定考试等级。判定标准如下表所示。#include<stdio.h>voidmain(){doublescore;printf("请输入学生成绩:");scanf("%lf",&score);
switch((int)(score/10))//分析switch后面的表达式为什么写成(int)(score/10)?{case10:
case
9:printf("该生的成绩等级为A-优秀.");break;
case
8:printf("该生的成绩等级为B-良好.");break;
case
7:printf("该生的成绩等级为C-中等.");break;
case
6:printf("该生的成绩等级为D-及格.");break;
default:printf("该生的成绩等级为E-不及格.");}}程序运行结果思考:将程序代码中的break去掉,会得到怎样的运行结果,试分析其原因。技能实训利用switch编程,实现从键盘输入1-7之间的数字时,显示对应的星期几的英文单词。当输入数字不在1-7范围内时,输出“error!”练一练技能实训任务五技能实训任务五#include<stdio.h>voidmain(){ int___; printf(“_______:"); scanf(“___",&___); if(_________) printf("error!\n"); else switch(____) { case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; } }技能实训任务五 switch(____) { case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; case__:printf(“______");______; }
else printf("error!\n");}#include<stdio.h>voidmain(){
int___; printf(“_______:"); scanf(“___",&___); if(_________)技能实训任务五
switch(x) { case1:printf("Monday\n");break; case2:printf("Tuesday\n");break; case3:printf("Wednesday\n");break; case4:printf("Thursday\n");break; case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break; }else printf("error!\n");}#include<stdio.h>voidmain(){ intx; printf("inputx:"); scanf("%d",&x); if(x>=1&&x<=7)技能实训任务五#include<stdio.h>voidmain(){ intx; printf("inputx:"); scanf("%d",&x); if(x<1||x>7) printf("error!\n"); else
switch(x) { case1:printf("Monday\n");break;
case2:printf("Tuesday\n");break;
case3:printf("Wednesday\n");break;
case4:printf("Thursday\n");break;
case5:printf("Friday\n");break;
case6:printf("Saturday\n");break;
case7:printf("Sunday\n");break; } }技能实训2.请将简单的计算器程序改写为带有菜单设计的计算器。运行结果如下:要求:第一个数:num1运算符:op第二个数:num2
运算结果:result练一练技能实训任务五#include<stdio.h>voidmain(){
floatx,y;
charop;printf("请输入运算式,如:1.6-0.3:");scanf("%f%c%f",&x,&op,&y);
switch(op){case'+':printf("%0.1f+%0.1f=%0.1f\n",x,y,x+y);break;
case'-':printf("%0.1f-%0.1f=%0.1f\n",x,y,x-y);break;
case'*':printf("%0.1f*%0.1f=%0.1f\n",x,y,x*y);break;case'/':printf("%0.1f/%0.1f=%0.1f\n",x,y,x/y);break;
default:printf("error!\n");}}技能实训任务五switch(___){case1:printf("加法!");printf("输入(第一个数、运算符、第二个数):"); scanf(“________",&___,&___,&_____); result=____________;break;case2:printf(“______"); printf("输入(第一个数、运算符、第二个数):"); scanf(“________",&___,&___,&_____); result=____________;break;case3:printf("乘法!"); case2:printf(“______"); printf("输入(第一个数、运算符、第二个数):"); scanf(“________",&___,&___,&_____); result=____________;break;
case4:printf("除法!"); case2:printf(“______"); printf("输入(第一个数、运算符、第二个数):"); scanf(“________",&___,&___,&_____); result=____________;break; }printf("%.2f%c%.2f=%.2f\n",num1,op,num2,result);}#include<stdio.h>voidmain(){floatnum1,num2,result;intch;charop;printf("___________________________");printf("____________________________");printf("____________________________");printf("____________________________");printf("____________________________");printf("____________________________");printf("____________________________");
printf("____________________________");
printf("请选择(1~4):");scanf(“____",&____);技能实训任务五switch(ch) {case1:printf("加法!");printf("输入(第一个数、运算符、第二个数):"); scanf("%f%c%f",&num1,&op,&num2); result=num1+num2;break;case2:printf("减法!"); printf("输入(第一个数、运算符、第二个数):"); scanf("%f%c%f",&num1,&op,&num2); result=num1-num2;break;case3:printf("乘法!"); printf("输入(第一个数、运算符、第二个数):"); scanf("%f%c%f",&num1,&op,&num2); result=num1*num2;break;case4:printf("除法!"); printf("输入(第一个数、运算符、第二个数):"); scanf("%f%c%f",&num1,&op,&num2); result=num1/num2;break; }printf("%.2f%c%.2f=%.2f\n",num1,op,num2,result);}#include<stdio.h>voidmain(){floatnum1,num2,result;intch;charop;printf("--------------------------------------------\n");printf("|菜单选择v1.0|\n");printf("--------------------------------------------\n");printf("|1.加法|\n");printf("|2.减法|\n");printf("|3.乘法|\n");printf("|4.除法|\n");printf("--------------------------------------------\n");printf("请选择(1~4):");scanf("%d",&ch);技能实训任务五switch(a) {case1:printf("第一个数,运算符,第二个数");scanf("%f%c%f",&x,&op,&y);
printf("%0.2f+%0.2f=%0.2f\n",x,y,x+y);break; case2:printf("第一个数,运算符,第二个数");scanf("%f%c%f",&x,&op,&y);
printf("%0.2f+%0.2f=%0.2f\n",x,y,x-y);break;
case3:printf("第一个数,运算符,第二个数");scanf("%f%c%f",&x,&op,&y);
printf("%0.2f+%0.2f=%0.2f\n",x,y,x*y);break;
case4:printf("第一个数,运算符,第二个数");
scanf("%f%c%f",&x,&op,&y);
printf("%0.2f+%0.2f=%0.2f\n",x,y,x/y);break;
default:printf("error!\n"); }}#include<stdio.h>voidmain(){ floatx,y; inta;
charop; printf("----------------------------\n"); printf("||菜单选择
||\n"); printf("----------------------------\n"); printf("||1.加法||\n"); printf("||2.减法||\n"); printf("||3.乘法||\n"); printf("||4.除法||\n"); printf("----------------------------\n"); printf("1~4"); scanf("%d",&a);学习总结任务五学习总结注意:(1)switch后面的表达式,可以为任何类型,但必须与常量表达式类型匹配。(2)每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。(3)各个case和default的出现次序不影响执行结果。(4)case后面的语句块可以不要花括号。(5)在switch分支结构中,如果对表达式的多个取值都执行相同的语句组,则对应的多个case语句可以共同使用同一个语句组。(6)如果在相匹配的case的语句块中没有break语句,那么程序将从此开始,一直执行到switch语句结束,或者直到遇到case子句中的break语句,才跳出switch结构。#include"stdio.h"
voidmain()
{intiy,im,id;/*定义整型变量*/printf("请输入年月日:");/*输出提示信息*/scanf("%d%d%d",_____,______,_____);/*从键盘输入三个数*/if(________________)/*判断是否闰年*/id=id+1;
/*闰年+1*/switch()/*判断的目标*/{case1:/*是否匹配*/printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case2:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case3:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case4:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case5:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case6:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case7:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case8:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case9:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case10:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case11:printf("%d年%d月%d日是%d年第%d天",____,____,____,____,____,);break;case12:printf("%d年%d月%d日是%d年第%d天",iy,im,id,iy,id+31+28+31+30+31+30+31+31+30+31+30);break;}}输入某个年月日,计算当天是当年的第几天?#include"stdio.h"/*编译预处理命令*/voidmain()/*main函数*/{intiy,im,id;/*定义整型变量*/printf("请输入年月日:");/*输出提示信息*/scanf("%d%d%d",&iy,&im,&id);/*从键
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年有温度的护理服务课件
- 就业指导简历写作指南
- 出租车应急方案
- 柜员会计的职业规划指南
- 记账实操-桥梁建设成本核算实例SOP
- 映翰通公司深度报告:铸工业互联之脉赋边缘AI新生
- javaweb级试题及答案
- 瑜伽教练(初级)试卷及详解
- 建筑材料试题及答案
- 导游全国导游基础知识题目及分析
- 2025年辽宁烟草公司招聘真题
- 一次函数与方程(组)、不等式课件+2025-2026学年人教版数学八年级下册
- 2026年上海市静安区社区工作者招聘考试笔试试题及答案解析
- 2026中国农业大学-东阿阿胶产业创新研究院招聘2人笔试备考试题及答案解析
- 2026年云南省烟草专卖局招聘(第二批585人)考试备考题库及答案解析
- 2026四川泸州市龙马潭区考试招聘社区专职工作者48人备考题库含答案详解(巩固)
- 呼吸衰竭患者的病情监测与评估
- 【小升初】2023-2024学年人教PEP版英语六年级下学期重点专项练习(阅读选择)附答案
- 《研学旅行课程设计》课件-研学课程方案设计
- 肩关节X线检查
- 2023年山东省国有资产投资控股有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论