C语言教案-第五周

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

30第五节分支结构——switch语句及条件运算符1:通过本节介绍的简单分支结构程序所必需的内容,以及方法,让学生拥有简单的编程思路。1.1学习目的:1熟练掌握分支语句2学习掌握switch语句3学习掌握条件运算符1.2学习内容:1switch语句2条件运算符1.3学习重点:1switch语句1.4教学方法:讲授法+练习法1.5学习方法:听课、做笔记、课后作业1.6学习时间第十一周2:回顾上一节:[15分钟]2.1关系运算符和关系表达式优先次序:1.前4种关系运算符(<,<=,>,=)的优先级别相同,后两种也相同。前4种高于后2种,结合方向是自左至右。例如:ab!=c等效于(ab)!=c。2.关系运算符的优先级低于算术运算符。例如:ca+b等效于c(a+b)。3.关系运算符的优先级高于赋值运算符。例如:a=bc等效于31a=(bc)。高→→→→低算术运算符关系运算符赋值运算符关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称关系表达式。1.当关系表达式的判断结果为“真”时,关系表达式的值为1,当判断结果为“假”时,关系表达式的值为0,即关系表达式的值只能是整数0或1。2.关系运算符的结合方向为自左至右。3.存放在内存中的实型数总是有误差。2.2逻辑运算符和逻辑表达式:用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。1.if语句的第一种形式if(表达式)语句2.if语句的第二种形式if(表达式)语句1else语句22.4if语句的嵌套使用一般形式如下:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3.....elseif(表达式m)语句n-1else语句n3:课程知识点讲解:具体知识点1:switch语句[30分钟]1.switch语句的形式:switch(表达式){case常量1:语句1case常量2:语句2…case常量n:语句ndefault:语句n+1}2.switch语句的执行过程:(1)算出括号中表达式的值。(2)用该值按顺序与case后面常量表达式的值相比。当找到相匹配的值时,就从此case右边的语句组开始往下执行,当没找到相匹配的值时。就从default右边的语句组开始往下执行。如果switch语句体内没有default32行,则跳过switch语句。注意:“case常量表达式”只起语句标号的作用。程序一开始执行switch语句就根据switch后面表达式的值首先确定入口标号。以后不再进行任何判断,直接从该入口标号的语句开始往下执行。如果在switch语句中使用break语句,就可提前退出switch语句体。案例讲解:【案例4.12】将任意输入的1至10的阿拉伯数字翻译成英文。编程分析:典型的运用switch语句的程序。键盘输入的值与case后面常量表达式相比,若匹配就输出相应的英文。#includestdio.hmain(){intn,m,i,flag;printf(请输入1个整数(大于等于1且小于等于10):\n);scanf(%d,&n);switch(n){case1:printf(\n这个数字对应的英语单词是One);break;case2:printf(\n这个数字对应的英语单词是Two);break;case3:printf(\n这个数字对应的英语单词是Three);break;case4:printf(\n这个数字对应的英语单词是Four);break;case5:printf(\n这个数字对应的英语单词是Five);break;case6:printf(\n这个数字对应的英语单词是Six);break;case7:printf(\n这个数字对应的英语单词是Seven);break;case8:printf(\n这个数字对应的英语单词是Eight);break;case9:printf(\n这个数字对应的英语单词是Nine);break;case10:printf(\n这个数字对应的英语单词是Ten);break;}}老师提问:问题:switch和if的区别具体知识点2:条件运算符【35分钟】33知识点讲解:条件运算符是C语言中唯一的三目运算符。条件表达式的一般格式为:表达式1?表达式2:表达式3条件运算符的执行过程是:先求解表达式1,当值为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值;否则求解表达式3,此时表达式3的值就作为整个条件表达式的值。条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符。条件运算符的结合性为自右至左案例讲解:输入3个整数,找出最大值。编程分析:前两个数比较将较大的值放入变量max中,再与第三个数相比较将较大放入max变量中,从而找到了最大值。#includestdio.hmain(){intn1,n2,n3,max;printf(请输入3个整数n1,n2,n3:\n);scanf(%d,%d,%d,&n1,&n2,&n3);max=(n1n2)?n1:n2;max=(maxn3)?max:n3;printf(n1,n2andn3中的最大值是%d\n,max);}4本节总结[10分钟]1.switch语句:switch语句的形式switch(表达式){case常量1:语句1case常量2:语句2…case常量n:语句ndefault:语句n+1}switch语句的执行过程(1)算出括号中表达式的值。(2)用该值按顺序与case后面常量表达式的值相比。当找到相匹配的值时,就从此case右边的语句组开始往下执行,当没找到相匹配的值时。就从default右边的语句组开始往下执行。如果switch语句体内没有default行,则跳过switch语句。注意:“case常量表达式”只起语句标号的作用。程序一开始执行switch语句就根据switch后面表达式的值首先确定入口标号。以后不再进34行任何判断,直接从该入口标号的语句开始往下执行。如果在switch语句中使用break语句,就可提前退出switch语句体。1.条件运算符:条件运算符是C语言中唯一的三目运算符。条件表达式的一般格式为:表达式1?表达式2:表达式3条件运算符的执行过程是:先求解表达式1,当值为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值;否则求解表达式3,此时表达式3的值就作为整个条件表达式的值。条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符。条件运算符的结合性为自右至左考核点考核点1:switch语句考核点2:条件表达式测试题测试题1:设手机有两种收费方式,第一种是每分钟0.6元,无月租费,另一种是每分钟收0.4元,再收50元月租费,输入一个月打电话的时(分钟),判断哪一种更合适。测试题2:猜数字游戏:随机产生一个小于100整数,然后游戏者从键盘输入数,若两个数相差不到10,则游戏者胜,否则游戏者输,请填空#includestdio.h#includetime.h#includestdlib.hmain(){intnum,dice,d:printf(“inputanumber:”);scanf(“%d”,&num);randomize();d=【】;if(【】)printf(“win\n”);elseprintf(“fail\n”);}扩展部分:扩展部分1:复杂的多分支结构例题35学生问题汇总:问题1:如何判断什么时候用if语句什么时候用switch语句作业:习题1:以下程序段,要求通过scanf语句给变量x、y、z分别赋值11、A、2.3,程序运行时从键盘输入的形式是【________】。intx;;chary;doublez;scanf(“x=%d%cz=%1f”,&x,&y,&z);习题2:某公司招聘条件是第一:熟练掌握C和VB;第二:具有3年以上工作经验或者重点大学毕业;第三:年龄在35岁以下。以下程序段将根据用户输入的条件,判断该应聘者是否符合条件,请填空。charcvb,collage;intwork,age;printf(“是否熟练C和VB(y\n):”);cvb=getche();printf(“已工作几年?”);scnaf(“%d”,&work);printf(“是否重点大学毕业生(y\n)”);collage=getche();printf(“请输入您的年龄:”);scanf(“%d”,&age);if(【】)printf(“符合条件\n”);elsePrintf(“不符合条件\n”);printf(“a=%d,x=%d\n”,a,x);}习题3:以下程序段的功能是:实现银行ATM自动取款机的功能。该取款机将用户输入的金额按照人民币从大到小的面值进行折合计算。先算出最多可以出多少100元,剩下的再计算最多可以出多少50元,依次关推,分别计算最多出多少20元、10元、5元、2元和1元。例如,用户要取款588元,则取款机应付出的钱的各类及个数为:5个100元、1个50元、1个20元、1个10元、1个5元、1个2元和1个1元。要求支取金额在1~1000(不含1000)元以内,请填空。inttotal,a,b,c,d,e,f,g;printf(“请输入取款额:”);scanf(“%d”,&total);if(【】)printf(“输入钱数有误。\n”);else{a=total/100;total=total%100;【】c=total/20;total=total%20;d=total/10;total=total%10;e=total/5;total=total%5;f=total/2;total=total%2;【】36if(a!=0)printf(“需支付100元:%d张\n”,a);if(b!=0)printf(“需支付50元:%d张\n”,b);if(c!=0)printf(“需支付20元:%d张\n”,c);if(d!=0)printf(“需支付10元:%d张\n”,d);if(e!=0)printf(“需支付5元:%d张\n”,e);if(f!=0)printf(“需支付2元:%d张\n”,f);if(g!=0)printf(“需支付1元:%d张\n”,g);}

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功