




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计课程教案表授课题目第三章程序的控制结构(4)选择结构switch课时安排1授课时间教学目的和要求1 掌握:条件运算符switch 语句2熟悉:选择结构程序设计教学内容1 基本内容:( 1 )条件运算符(2)多分支语句(3)程序设计举例2重点:条件运算符、多分支语句、选择结构程序设计3难点:条件运算符1、条件运算符(10 分钟)条件运算符的格式:变量=表达式1 ?表达式2 : 表达式3 ;执行过程:当表达式1 的值为 “真 ”时,将表达式2 的值赋给变量;当表达式1 的值为 “假 ”时,将表达式3 的值赋给变量。即: 无论表达式1 为 “真 ”还是为 “假 ”, 都执行一个赋值语
2、句且给同一个变量赋值。可以看出,用条件运算符“?:”的功能,来实现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
3、】输入两个整数,并将其中较大者显示出来。#include <stdio.h>main()int a, 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()int score;char grade;printf("please input a s
4、core : n");scanf("%d",&score);grade=score>=90 ? 'A' : (score>=60?'B':'C');printf("%d belongs to %c",score,grade);运行: please input a score:输入:86显示:86 belongs to B练习:下面程序段的运行结果是int x=1,y=1,z=1;x+=y+=z;printf( “ n%”d ,x<y?y:x);A、 3 B、 2C、 4D
5、、不确定的值执行以下程序的输出结果是main() int k=4,a=3,b=2,c=1;printf( “ n%”d ,k<a?k:c<b?c:a);A、 4 B、 3C、 2D、 1若运行下面程序时,给变量a 输入15,则输出结果是main() int a,b;scanf( “ %d” ,&a);b=a>15?a+10:a-10;printf( “ n%”d ,b);A、 5B、 25 C、 15D、 102、多分支语句(25 分钟)switch 语句是多分支选择语句。一般形式:switch( 表达式 )case 常量表达式1:case 常量表达式2:语句1;br
6、eak;语句2;break;case 常量表达式n:default:语句n+1;语句n;break;执行过程:首先计算switch 后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case 后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向 default 后面的语句去执行;如果没有default 部分, 则将不执行switch语句中的任何语句,而直接转到switch 语句后面的语句去执行。其流程图如图4-3 所示。说明:1) switch 后面圆括号内的表达式的值和case后面的常量表达式的值,必须是整型或字符型。2) 同一个switch
7、 语句中的所有case后面的常量表达式的值都必须互不相同,其中 default和语句n+1 可以省略。3) switch 语句中的case和 default 的出现次序是任意的。4)由于switch 语句中的“ cas常量表达式e”部分只起语句标号的作用,所以,在执行完某个 case后面的语句后,如果没有“ break来结束多分支语句, ”将自动转到该语句后面的语句去执行,直到遇到switch 语句的右花括号为止,而不再进行条件判断。5)每个case的后面既可以是一个语句,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。6)多个case的后面可以共用一组执行语句。如:switch
8、 ( n)case 1:case 2:x=10; break;【例 4.7】从键盘输入一个星期(1 7) ,并显示该星期的英文名称。#include <stdio.h>main()int week;scanf(%d ,&week ) ;switch ( week) case 1:printf(Monday ); break;case 2:printf(Tuesday); break;case 3:printf(Wednesday); break;case 4:printf(Thursday ); break;case 5:printf(Friday );break;case
9、 6:printf(Saturday); break;case 7:printf(Sunday);break;default:printf (Data Error! );练习:运行下面程序时,从键盘输入字母H ,则输出结果是#include <stdio.h>main() char ch;ch=getchar()switch(ch) case H : printf(n“” H)e; llo!运行下面程序时,输入数据为main()case G : printf( default:printf(“ Good mn” orn);ing!Bye_!Byen” );2, 13, 5<C
10、R>”, 则输出结果是int a, b, c; scanf( “ %,d switch(a)case1:case2:case3:%d, %d” ,&a,&b,&c ) ;case4:printf( printf( printf(n%”d ,b+c); break;n%”d ,-bc); break;n%”d ,b*c); break;if(c!=0) printf(n”“ ,/bc%);dbreak; else printf(n ” er)r;o br reak; default: break;3、程序设计举例(10 分钟)【例4.8】输入三个数,按由小到大的顺序
11、输出。#include <stdio.h> main ()int a , b , c, temp;printf(Enter three integers: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 二个数的互换,tem
12、p 是一个临时中间单元。相当于一瓶可乐a,一瓶橘汁b 互换瓶,需要一个空瓶temp,才可以实现互换。【例4.10】 写一程序,从键盘上输入年份year(用4位十进制数,如 2008) , 判断是否闰年。算法分析:闰年的条件是:某年能被4 整除、但不能被100 整除,或者能被400 整除。我们用取余来判断year 能否被 4 整除,余数为0 则能整除,否则不能整除。据此写出是闰年的条件表达式:( Year%4=0 and year%100!=0 ) | (year%400=0) ,程序代码:main( )int year;printf("Please input the year:&q
13、uot;);scanf("%d",&year);if (year%4=0 && year%100!=0) | (year%400=0)printf("%d is a leap year.n",year);else printf("%d is not a leap year.n",year);运行结果:输入:1989输出: 1989 is not a leap year.输入:2000输出: 2000 is a leap year.【例 4.11】大学对不同性质的学生听课收费不同。某校是这样规定的:本校全日制学生
14、不收费;本校夜大学生选课12 学分及以下付200 元,然后每增加一个学分付20 元;对外校学生选课12 学分及以下付600 元,然后每增加一个学分付60 元。输入某个学生的编号、选课学分以及学生类型,编程计算该学生应付的学费。算法分析:学分用n,收费用x,编号用number,学生的类别用p。根据题意,分三种情况考虑:( 1)本校全日制:x=0( 2)本校夜大:n 12, x=200n>12, x=200+( n-12) *20( 3)外校:n 12, x=600n>12, x=600+( n-12) *60main()int n, x, number, p;printf(t 学生收
15、费管理n);printf(t= = = = = = = =n);printf(t1-本校全日制学生nt2-本校夜大学生nt3-外校学生n);printf(t= = = = = = = =n);printf(t 请输入学生的类别(13):);scanf(%d ,&p ) ;printf(t 请输入学生的编号和学分:) ;scanf(%d , %d , &number , &n ) ;if( p= =1 ) x=0;else if( p= =2)if( n<=12)x=200;else x=200+( n-12) *20;elseif( n<=12) x=600
16、;else x=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 等 ; 成绩 80score <90 为 B 等 ; 成绩70 score <80 为 C 等 ;成绩60 score <70 为 D 等成绩
17、 score < 60为 E 等 (score 为整数)。分析: 设 score为整型数,在score 90 的范围内,score可能取 100, 99, ,90,利用两个整数相除,结果自动取整的特性,score和 score /10 有如下对应关系:scorescore/10 9010, 98089870797606960 以下#include <stdio.h>6default 因此,可以用score /10的值来确定分支。main() /*用 switch int score;语句评级*/scanf("%d" ,&score);switch (score /10)case 10:case 9: printf("%d: An", score);break;case 8:printf("%d: Bn", scor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机安全与加密2025年试题及答案
- 商业智能与AI企业升级的催化剂
- 行政法学复习误区分析:试题及答案
- 前端框架对比分析试题及答案
- 法学概论考试中的实践与理论结合试题及答案
- 校招:市场营销专员面试题及答案
- 计算机程序的调试过程试题及答案
- 软件设计师实习总结和试题及答案探讨
- 2025年软考设计师独特思考方式试题及答案
- 公司战略与智能化转型的融合试题及答案
- 无锡保安考试题型及答案
- 延迟退休合同协议
- 消毒隔离知识培训课件
- 课后托管服务的岗位职责与管理
- 技术合作协议范本
- DB32-T 5082-2025 建筑工程消防施工质量验收标准
- 2025年度建筑施工安全演练计划
- 生产车间6S培训
- 托幼机构十项卫生保健制度
- 彩钢板围挡搭设施工方案
- 山东2025年山东省烟草专卖局(公司)高校毕业生招聘208人笔试历年参考题库附带答案详解
评论
0/150
提交评论