




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例题:字母译码:输入一个小写字母,输出其后的第四个字符。 例如:输入a ,输出e; 输入v,输出z; 输入y,输出c;,程序(lt1.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,x+4,如果x+4小于等于z,那么,否则,y=x+4,y=x-22;,x+4小于等于z,y=x+4,y=x-22,输出y,是,否,if(x+4=z),y=x+4,else,y=x-22;,=,、=、=、!=,if,else,switch,第四章 选择结构程序设计,重点:1、掌握三种类型运算符:关系、逻辑、条件,2、掌握选择结构的两种语句:if else switch,3、break语句的用法,流程图:,条件P,语句A,语句B,Y,N,4.1关系运算符及表达式,重点掌握几种运算符的书写、优先级以及运算规则,一、运算符, = =,= !=,低,高,比较规则:,数值:按数的大小,字符:按ASCII码,二、表达式,1、形式:,例如: (3+5)(5*2),2、表达式的值,若表达式成立则为1,若表达式不成立则为0,算术运算符 * / % + -,赋值运算符 = += -= *= /= %=,逗号运算符 ,,低,高,条件运算符 = = = !=,3、各运算符的优先级,4、结合性:左结合,例如: int x=1,y=2,z=3; 则表达式 z y x的值 为,0,例如:66a 结果为,0,aA 结果为,1,例题:表示出下列关系:,1、能被3 整除的数x,X%3=0,2、所有的非负数x,X=0,3、所有的奇数X,X%2=1或者,X%2!=0,1.基本形式,条件P,真,假,语句1,语句2,形式:if (表达式) 语句1 else 语句2,注: if后的表达式一般为关系表达式或者逻辑表达式,也可以为任何合法的表达式。只要表达式的值为非0就作为真,否则为假。表达式一定要用()括起来。,4.2 if语句,练习:求两个数中比较大的数。,输入两个整数给x,y,xy,max=y,max=x,输出max的值,#include void main() ,int x,y,max;,scanf(“%d,%d”,if(xy),max=x;,else,max=y;,printf(“the max number is %dn”,max);,练习: 1、(lt1.c)做一个简单的加法运算练习小程序,具体要求:由计算机随机产生一个100以内的加法运算式,用户来运算,如果计算正确,则提示“right”,否则提示“wrong”。,2、异性朋友匹配小游戏。(friend.c) 游戏规则:由计算机扮演另一方随机抽取一种性别。输入你的性别,如果二者性别相同,则不能做朋友。如果不相同,则由你来快速猜出对方的性别,猜对即可做朋友,否则也不能做朋友!,补充:产生随机数函数: rand ()%N:产生0N)的整数,注:一般在使用random函数之前先用srand()函数产生一个随机的种子,一般利用系统的时钟。格式为: srand(time(0),使用以上函数应在程序的开头加相应的头文件“stdlib.h” 和”time.h”,例如:产生一个100以内的随机数赋值给变量X,应使用的语句为: x=rand()%100;,例题:字母译码:输入一个字母,输出其后的第四个字符。 例如:输入a ,输出e; 输入v,输出z; 输入Y,输出C;,程序(lt2.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,a,a,A,A,if(小写字母),y=(x+4- a )%26+a ;,else,y=(x+4- A )%26+A ;,小写字母,错误,逻辑运算符,小写字母的表示:,若有字符变量c,表示c的范围属于小写字母,则:,ca,cz,acz,ca & cz,&,|、!,4.2 逻辑运算符及表达式,一、运算符:,! & |,二、优先级,! & |,高,低,三、运算规则,逻辑运算符的运算对象多为逻辑值(即真和假),也可以为任意类型的数据,只要表达式的值为非0就作为真运算,0则作为假运算。,例如:(53) & (612),3| (612),(aA)| 0 & b,! (x0),注:& 和|都为双目运算符, 而!为单目运算符。,运算规则:假设用a和b分别表示两个表达式的值,,!a :对a的值求反,即若a的值为0 则表达式的值为 1,反之,若a的值为1,则表达式的值为0。,a & b a和b两者都为1时表达式的值为1,a、b两 者中有一个为0则表达式的值为0。,a | b a和b两者都为0时表达式的值为0,a、b两 者中有一个为1则表达式的值为1。,算术运算符 * / % + -,赋值运算符 = += -= *= /= %=,逗号运算符 ,,低,高,条件运算符 = = = !=,各运算符的优先级,非运算符 !,逻辑运算符 & |,(53) & (612),3| (612),(aA)| 0 & b,! (x0),所以以下的表达式分别等价于:,53 & 612,3| 612,aA| 0 & b,! x0,错误:!的优先级高于关系运算符,四、表达式:,1、形式:,2、表达式的值,若表达式成立则为1,若表达式不成立则为0,0,1,0,(3) 能够同时被3和5整除的数,x%3=0,x%5=0,&,(4) 表示所有的小写字母(某个变量的范围为小写字母),c=a & c=z,(5) 表示所有的字母,c=a & c=z,c=A & c=Z,|,( ),( ),程序(lt2.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,if(c=a & c=z),作业:课本95页第4题,4.3if语句的其他形式,条件P,真,语句,形式:if (表达式) 语句,其他操作,一、无else的if语句,/小写字母到大写字母的转换 #include void main() char x,y; printf(“请输入一个小写字母”); scanf(“%d”, ,/如果x是小写字母,x=a,x=z,&,if( ),(2)if语句的其他形式 (if语句的嵌套),例题:编写程序完成下列函数的运算:,输入 x,x0,y=1,X0,是,y=-1,是,y=0,否,否,条件1,语句1,条件2,是,语句2,是,语句3,否,否,形式: if(条件1) 语句1 else if(条件2) 语句2 else 语句3,条件1,语句1,条件2,否,语句2,是,语句3,否,是,形式: if(条件1) if(条件2) 语句1 else 语句2 else 语句3,练习:,#include void main() int x,y; scanf(“%d”, ,if(x0),y=1;,else,if(x0),y=-1;,else,y=0;,main() int x,y; scanf(“%d”, ,if(x=0),if(x=0) if(x0) y=1; else y=0; else y=1;,y=1;,else,if(x0),y=1;,else,y=0;,练习:,main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(“%dn”,c); ,程序的结果为:2,注: else 不能单独使用,必须与if配对使用,而且与最近一个没有匹配的if匹配,而不论书写形式如何。为了便于分析,If语句在书写上采用渐进缩进的形式。,main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(“%dn”,c); ,内容回顾,1、关系运算符、=、=、=、!=,2、逻辑运算符 !、&、|,3、ifelse语句,注意: (1)if语句体和else语句体需要用括起来,如果其中只有一条语句,则可以省略。,(2)如果使用if语句的嵌套,在书写时尽量采用缩进的方式。,例题:编写一个四则运算的运算器。具体要求:输入一个四则运算计算式,计算机给出相应的结果。 (operation.c),#include “stdio.h“ void main() ,int x,y;char c;,printf(“input an arithmatic operation:a+(-,*,/)bn“);,scanf(“%d%c%d“,输入运算式,c=+,输出x+y,输出x-y,c=*,c=-,输出x*y,c=/,输出x/y,提示“错误”,if(c=+),printf(“%dn“,a+b);,else,if(c=-),printf(“%dn“,a-b);,else,else,else,if(c=*),if(c=/),printf(“%dn“,a*b);,printf(“%dn“,a/b);,printf(“ 错误的表达式n”);,4.4 switch 语句,本节重点:1)if语句与switch语句的关系。,2)break; 中断语句的正确使用。,switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default : 语句n+1 ,一、switch语句形式:,注:1)switch为关键字,为switch语句体。,2)switch后的表达式可以为任意类型,放于()中。,3)case为关键字,只起到语句标号的作用,不进行判断。常量表达式的类型应与switch后表达式的类型一致。,4)case与后面的表达式必须用空格隔开。,5)case后的语句可以为一条语句,也可有多条或者没有。,6)default为关键字。代表所有case标号之外的所有情况,可出现在语句体中的任何位置,也可以没有。,switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default : 语句n+1 ,二、执行过程,计算switch后面表达式的值,有无对应的case标号,无,有无default,有,有,由此向下执行,由此向下执行,Switch语句体后面的语句,无,将上述的if语句用switch语句来表示:,switch ( 表达式 ) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default : 语句n+1 ,if(c=+)printf(“%dn“,a+b); else if(c=-)printf(“%dn“,a-b); else if(c= *)printf(“%dn“,a*b); else if(c=/)printf(“%dn“,a/b); else printf(“错误的表达式!n“);,c,+:,-:,printf(“%dn“,a+b);,printf(“%dn“,a-b);,case *:,printf(“%dn“,a*b);,case /:,printf(“%dn“,a/b);,default :,printf(“错误的表达式n”);,例如在程序运行时输入6+3 程序输出:,注:switch语句常常与break语句一起使用,才能起到真正的分支作用。,switch(c) case +:printf(“%dn“,a+b); case -:printf(“%dn“,a-b); case *:printf(“%dn“,a*b); case /:printf(“%dn“,a/b); default:printf(“错误的表达式n”); ,由此可见,并没有起到真正的分支作用。,break;,break;,break;,break;,break;,三、break语句,中断语句,执行到break语句后,立即跳出switch语句体。,练习:把下列的if语句改写成switch语句,if(x=1) n1+; else if(x=2) n2+; else if(x=3) n3+; else n4+;,switch(x) case 1: n1+;break; case 2: n2+;break; case 3: n3+;break; default: n4+;,练习:输入一个不多于5位的正整数,分解出其中每位上的数字,然后将从高位向低位输出。(integer.c),引申思考:输入一个任意位数的正整数,分解出其中的每位上的数字。(从低位向高位输出) (chp5integer.c),练习:编程序完成以下功能:输入两个整数,通过菜单选择对这两个数进行加、减、乘、除不同操作,并将运行结果输出。(operation.c),引申思考:进行多个数学式的运算,直到不想计算为止(以输入字符n作为结束标志)。(chp5operation.c),例:能正确表示逻辑关系:“a=1或a0”的C语言表达式是( ) A) a=1 or a=1 | a=1 & a=1 | a=0,课程回顾,1、关系运算符和逻辑运算符。,例题:设int x=3,y=0; (x0) 执行该语句后y的值为:,1,(x0),(2)& 和 |运算符的运算规则。,D,注意:(1)会表示简单或者复杂的条件,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。(参见课本77页说明),练习:输入一个不多于5位的正整数,求出它是几位数?,题解: #include void main() int x,n; printf(“请输入一个不多于5位的正整数(0-99999):“); ,scanf(“%d“,if(x=10000) n=5;,else if(x=1000) n=4;,else if(x=100) n=3;,else if(x=10) n=2;,else n=1;,printf(“%dn“,n);,(x=10000)& (n=5),(x=1000)& (n=4),(x=100)& (n=3),(x=10)& (n=2),(n=1),|,|,|,|,(x=10000)& (n=5)| (x=1000)& (n=4) |(x=100)& (n=3) |(x=10)& (n=2)| (n=1),(x/10000),2、实现分支的两种语句:ifelse 和switch,注意: (1)else 与if的匹配原则。 (2)如果if或者else的语句体有多条语句,必须用大括号括起来。,(3)switch一般要与break连用才能起到多分支的作用。,练习: 下述关于break语句的描述中,错误的是( ) A . break语句可用于if语句语句中,它将退出if语句 B . break语句可用于switch语句中,它将退出switch语句 C . break语句可用于循环体内,它将退出该重循环 D . break语句在一个循环体内可以出现多次,A,练习: main( ) int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf(“a=%d,b=%dn”,a,B) ; 该程序的输出结果是( ) A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2,A,练习:输入一个不多于5位的正整数,求出它是几位数,然后由高位到低位输出每一位上的数字。,题解: #include void main() int x,n; printf(“请输入一个不多于5位的正整数(0-99999):“); scanf(“%d“, ,ten_thou=x/10000; thou=x%10000/1000; hun=x%1000/100; ten=x%100/10; id=x%10;,if(n=5)printf(“%d,%d,%d,%d,%dn“,ten_thou,thou,hun,ten,id); else if(n=4)printf(“%d,%d,%d,%dn“,thou,hun,ten,id); else if(n=3) printf(“%d,%d,%dn“,hun,ten,id); else if(n=2) printf(“%d,%dn“,ten,id); else printf(“%dn“,id);,switch(n) case 5:printf(“%d,%d,%d,%d,%dn“,ten_thou,thou,hun,ten,id); break; case 4:printf(“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年女装行业发展趋势与市场前景展望
- 调研合同协议书
- 租车协议终止合同协议书
- 矿山合同协议书
- 转让展厅合同协议书模板
- 超市合同提前终止协议书
- 合同协议书到期
- 养生合同协议书
- 合同续约协议书
- 购买合同转让协议书
- 阀门产品质量证明书
- 2024年四川省成都市中考地理+生物试卷真题(含答案解析)
- JB∕T 11845-2014 实型铸造用模样EPS板材
- 自动喷水灭火系统 第11部分:沟槽式管接件
- 2024年越南玻尿酸填充行业现状及前景分析2024-2030
- 安徽省合肥市瑶海区第三十八中学2023-2024学年八年级下学期期末语文试题(解析版)
- 2024年四川省成都市中考英语试卷(含官方答案)
- 徐州市小升初科学试卷 (含答案)
- 互联网技术支持的新型健康管理模式对慢病人群的应用研究
- 2024年湖北省武汉市高考数学一调试卷
- 愿站成一棵树金波
评论
0/150
提交评论