《C语言程序设计》教案第三章程序的控制结构-选择结构switch_第1页
《C语言程序设计》教案第三章程序的控制结构-选择结构switch_第2页
《C语言程序设计》教案第三章程序的控制结构-选择结构switch_第3页
《C语言程序设计》教案第三章程序的控制结构-选择结构switch_第4页
《C语言程序设计》教案第三章程序的控制结构-选择结构switch_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习好资料 欢迎下载学习好资料 欢迎下载《C语言程序设计》课程教案表授课题目第三章 程序的控制结构( 4)——选择结构switch课时安排1授课时间教学目的和要求1.掌握:条件运算符 switch语句2.熟悉:选择结构程序设计教学内容.基本内容:(1)条件运算符(2)多分支语句(3)程序设计举例.重点:条件运算符、多分支语句、选择结构程序设计.难点:条件运算符1、条件运算符(10分钟)条件运算符的格式:变量=〈表达式1〉?〈表达式2〉:〈表达式3〉;执行过程:当表达式1的值为真”时,将表达式2的值赋给变量;当表达式 1的值为假”时,将表达式3的值赋给变量。即:无论表达式1为真”还是为假”,都执行一个赋值语句且给同一个变量赋值。 可以看出,用条件运算符?:”的功能,来实现if语句的第2种格式。说明:条件表达式中的表达式2”和表达式3”,又可以是条件表达式,即嵌套使用; C语言中条件运算符的优先级高于赋值运算符, 但低于逻辑运算符;条件运算符要求有三个操作对象,称三目(元)运算符;条件运算符的结合方向为 自右至左如条件表达式:y=x>10?x/10:x>0?x:-x;从右至左结合,等价于:y=x>10?x/10:(x>0?x:-x);它的功能是:当x>10时,y的值为x/10;当x<10时,y的值取决于表达式x>0?【例4.4】输入两个整数,并将其中较大者显示出来。#include<stdio.h>main(){inta,b,max;scanf("%d%d",&a,&b);max=a>b?a:b;printf("max=%d",max);}【例4.5】利用条件运算符实现对输入的学生成绩划分等级:学习成绩 >=90分的同学用A表示;60-89分之间的用B表示;60分以下的用C表示。程序代码:#include"stdio.h"main(){intscore;chargrade;printf("pleaseinputascore:\n");scanf("%d",&score);grade=score>=90?'A':(score>=60?'B':'C');printf("%dbelongsto%c",score,grade);}运行:pleaseinputascore:输入:86/显示:86belongstoB练习:下面程序段的运行结果是[ ]intx=1,y=1,z=1;x+=y+=z;printf( "n%d,x<y?y:x);A、3B、2 C、4D、不确定的值TOC\o"1-5"\h\z执行以下程序的输出结果是[ ]main(){intk=4,a=3,b=2,c=1;printf( "n%d,k<a?k:c<b?c:a};A、4B、3 C、2 D、1若运行下面程序时,给变量a输入15,则输出结果是[ ]main(){inta,b;scanf("%d',&a);b=a>15?a+10:a-10;printf( "%d,b);}A、5 B、25C、15 D、102、多分支语句(25分钟)switch语句是多分支选择语句。一般形式:switch(表达式){case常量表达式1:语句1;[break;]case常量表达式2:语句2;[break;]…case常量表达式n:语句n;[break;]default:语句n+1;}执行过程:首先计算switch后面圆括号内表达式的值,若此值等于某个 case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何 case后面的常量表达式的值,则转向default后面的语句去执行;如果没有default部分,则将不执行switch说明:1)switch后面圆括号内的表达式的值和 case后面的常量表达式的值,必须是整型或字符型。2)同一个switch语句中的所有case后面的常量表达式的值都必须互不相同, 其中default和〈语句n+1〉可以省略。3)switch语句中的case和default的出现次序是任意的。4)由于switch语句中的“cas常量表达式”部分只起语句标号的作用,所以,在执行完某个case后面的语句后,如果没有“brea■结束多分支语句,将自动转到该语句后面的语句去执行,直到遇到 switch语句的右花括号为止,而不再进行条件判断。5)每个case的后面既可以是一个语句,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。6)多个case的后面可以共用一组执行语句。如:switch(n){case1:case2:x=10;break;…}【例4.7】从键盘输入一个星期(1〜7),并显示该星期的英文名称。#include<stdio.h>main(){intweek;scanfC%d",&week);switch(week){case1:printf(〃Monday");break;case2:printf(〃Tuesday");break;case3:printf(〃Wednesday/);break;case4:printf(〃Thursday");break;case5:printf(〃Friday");break;case6:printf(〃Saturday');break;case7:printf(〃Sunday");break;default:printf(〃DataError!":);}}练习:运行下面程序时,从键盘输入字母 H,则输出结果是[ ]#include<stdio.h>main(){charch;ch=getchar()switch(ch){case'H':printf(Hlello!case'G':printf("GoodmOnnjng!default: printf("Bye_Byen");}运行下面程序时,输入数据为main()}运行下面程序时,输入数据为main(){inta,b,c;scanf("%d%d,%d'switch(a){easel:printf(case2: printf(printf({default:break;“213,5<CR>,则输出结果是[,&a,&b,&c);“r%d,b+c);break;“r%d-c);break;"%d,b*c);break;if(c!=0){printf( n“:b%d;break;}else{printf( "error;break;}3、程序设计举例(10分钟)【例4.8】输入三个数,按由小到大的顺序输出。#include<stdio.h>main(){inta,b,c,temp;printf("Enterthreeintegers:\t");scanf("%d,%d,%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(b>c){temp=b;b=c;c=temp;}printf("%d<%d<%d",a,b,c);}解释:语句temp=a;a=b;b=temp;是实现a,b二个数的互换,temp是一个临时中间单元。相当于一瓶可乐a,一瓶橘汁b互换瓶,需要一个空瓶temp,才可以实现互换。【例4.10】写一程序,从键盘上输入年份year(用4位十进制数,如2008),判断是否闰年。

算法分析:闰年的条件是:某年能被 4整除、但不能被100整除,或者能被400整除。我们用取余来判断year能否被4整除,余数为0则能整除,否则不能整除。据此写出是闰年的条件表达式:(Year%4==0andyear%100!=0)||(year%400==0),程序代码:main(){intyear;printf("Pleaseinputtheyear:");scanf("%d",&year);if((year%4==0&&year%100!=0 )||(year%400==0))printf("%disaleapyear.\n",year);elseprintf("%disnotaleapyear.\n",year);}运行结果:①输入:1989/输出:1989isnotaleapyear.②输入:2000/输出:2000isaleapyear.【例4.11】大学对不同性质的学生听课收费不同。某校是这样规定的:本校全日制学生不收费;本校夜大学生选课12学分及以下付200元,然后每增加一个学分付 20元;对外校学生选课12学分及以下付600元,然后每增加一个学分付 60元。输入某个学生的编号、选课学分以及学生类型,编程计算该学生应付的学费。算法分析:学分用n,收费用x,编号用number,学生的类别用p。根据题意,分三种情况考虑:(1)本校全日制:x=0(2)本校夜大:nW12,x=200n>12,x=200+(n-12)*20(3)夕卜校: nW12,x=600n>12,x=600+(n-12)*60main(){intn,x,number,p;printf("\t学生收费管理\n");printf("\t============\n〃);printf("\t1-本校全日制学生\n\t2-本校夜大学生\n\t3-外校学生\n");printf("\t============\n〃);printf(〃\t请输入学生的类别(1〜3):〃);scanf("%d",&p);printf(〃\t请输入学生的编号和学分:〃);scanf("%d,%d”,&number,&n);if(p==1)x=0;elseif(p==2)if(n<=12)x=200;elsex=200+(n-12)*20;elseif(n<=12)x=600;elsex=600+(n-12)*60;printf("\t学生%4d应交费%4d元\n",number,x);}运行结果:学生收费管理1一本校全日制学生2一本校夜大学生3一外校学生请输入学生的类别(1〜3):2请输入学生的编号和学分:1001,34学生1001应交费640元按照输入,类别是 2,编号是1001,学分是34。例4.12编程:根据输入的学生的成绩判断等级。当成绩score>90时为A等;成绩80<score<90为B等;成绩70<score<80为C等;成绩60<score<70为D等成绩score<60为E等(score为整数)。分析:设score为整型数,在score>90的范围内,score可能取100,99,.….,90,利用两个整数相除,结果自动取整的特性, score和score/10有如下对应关系:score score/10TOC\o"1-5"\h\z>90 10,980~89 870~79 760~69 660以下 default因此,可以用score/10的值来确定分支。#include<stdio.h>main()/*用switch语句评级 */{intscore;scanf("%d",&score);switch(score/10){case10:case9:printf("%d:A\n",score);break;case8:printf("%d:B\n",sco

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论