《二级C语言程序设计》第4章选择结构程序设计课件_第1页
《二级C语言程序设计》第4章选择结构程序设计课件_第2页
《二级C语言程序设计》第4章选择结构程序设计课件_第3页
《二级C语言程序设计》第4章选择结构程序设计课件_第4页
《二级C语言程序设计》第4章选择结构程序设计课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 选择结构程序设计4.1 关系表达式和逻辑表达式4.1.1 关系表达式1关系运算符关系运算符是比较两个操作数大小的符号。两个操作数一般为数值型数据。Turbo C的关系运算符及其优先级、结合律如表所示:运算符功能优先级(值小的优先级高)结合律 =60 a+bb= =c b+4c-6关系表达式的值是一个逻辑值,即“真”或“假”。C语言中,用1表示“真”,用0表示“假”。第4章 选择结构程序设计4.1 关系表达式和逻辑表达式4.1.2 逻辑表达式1逻辑运算符逻辑运算符是确定两个操作数逻辑关系的符号。两个操作数一般为逻辑型数据。Turbo C的逻辑运算符及其优先级、结合律如表所示:运算符功能优

2、先级(值小的优先级高)结合律!逻辑非2从右向左&逻辑与11从左向右|逻辑或12第4章 选择结构程序设计4.1 关系表达式和逻辑表达式4.1.2 逻辑表达式1逻辑运算符各逻辑运算符的运算规则如表所示:数据a数据ba&ba|b!a!b111100100101010110000011第4章 选择结构程序设计4.1 关系表达式和逻辑表达式4.1.2 逻辑表达式1逻辑运算符2逻辑表达式由逻辑运算符将两个表达式连接起来的有意义的式子称为逻辑表达式。例如:!a+b&c a|b= =c a0|bb) max=a; else max=b; printf(max=%dn,max);程序2:main() int a

3、,b,max; scanf(%d%d,&a,&b); max=a; if(maxb) max=b; printf(max=%dn,max);第4章 选择结构程序设计4.2 if语句4.2.2 嵌套if语句在if 语句中又包含一个或多个if语句,称为嵌套if语句。一般形式如下:if(表达式1) if(表达式2 ) 语句1 else 语句2else if(表达式3) 语句3 else 语句4第4章 选择结构程序设计4.2 if语句4.2.2 嵌套if语句说明:(1)if与else的配对关系从最内层开始,else总是与离它最近的未曾配对的if配对。(2)if与else的个数最好相同,从内层到外层一一

4、对应,以避免出错。(3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如:if (表达式1 ) if(表达式2 ) 语句1 else 语句2这时花括号限定了内嵌if 语句的范围,因此else与第一个if配对。例4.2 对任意x,根据以下函数关系求对应y的值。 -1 (x0)程序:main( ) int x,y; scanf(%d,&x); if(x0) y=-1; else if(x=0) y=0; else y=1; printf(x=%d,y=%dn,x,y); 输入:-3结果:x=-3,y=-1输入:4结果:x=4,y=1第4章 选择结构程序设计4.3 条件表达式条件运算

5、符“?”和“:”两个符号组成。由条件运算符构成的条件表达式的一般形式是: ?:; 条件运算符的含义是:先求表达式1的值,如果为真,则求表达式2 的值并把它作为整个表达式的值;如果表达式1 的值为假,则求表达式3 的值并把它作为整个表达式的值。第4章 选择结构程序设计4.3 条件表达式例4.3 用条件表达式改写例4.1(输出两个数中的较大者)。程序:main() int a,b,max; scanf(%d%d,&a,&b); max=(ab)?a:b; printf(max=%dn,max);第4章 选择结构程序设计4.4 复合语句与空语句4.4.1 复合语句复合语句是由左右花括号括起来的多条语

6、句,一个复合语句在语法上等同于一个语句。复合语句的一般形式如下:说明部分;语句部分在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。一个复合语句又可以出现在其他复合语句内部。第4章 选择结构程序设计4.4.2 空语句空语句是只有一个分号的语句,其一般形式为: ;空语句在语法上占据一个语句的位置,但不做任何操作。4.4 复合语句与空语句第4章 选择结构程序设计4.5 开关语句开关语句的一般形式如下: switch(表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式n:语句n; default:语句n+1; 开关语句的功能是:首先计算swit

7、ch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。第4章 选择结构程序设计4.5 开关语句说明:(1)switch后面圆括号内的表达式的值和case后面的常量表达式的值都必须是整型或字符型,不允许是浮点型。(2)同一个switch语句中的所有case后面的常量表达式的值都必须互不相同。(3)switch语句中的case和default的出现

8、次序是任意的,也就是说default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。(4)每个case或default后的语句可以是多条语句,但不需要使用“和”括起来。第4章 选择结构程序设计4.5 开关语句说明:(5)由于switch语句中的“case 常量表达式”部分只起标号的作用,而不进行条件判断,所以在执行完某个case后的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句的右花括号或break语句为止,而不再进行条件判断。如果在执行完一个case分支后,要跳出switch语句转到下一条语句执行,可在一个case结束后、下一个case开始前

9、插入一个break语句。程序一且执行到braek语句,将立即跳出switch语句。switch(n) case 1: x=1; case 2: x=2;当n=1时,将连续执行下面两个语句:x=1;x=2;例如:switch(n) case 1:x=1; braek; case 2:x=2; braek;当n=1时,将只执行一个语句:x=1;第4章 选择结构程序设计4.5 开关语句说明:(6)多个case可以共用一组执行语句。例如:switch(n) case 1: case 2: case 3: x=3;第4章 选择结构程序设计4.5 开关语句注意:(1)switch的表达式后不能有“;”。(

10、2)case和default与其后面的常量表达式间至少有一个空格。(3)switch语句可以嵌套,break语句只跳出它所在的switch语句。 (4)default语句可以省略。例4.4 给变量a,b,c输入整数,根据a的值确定对b、c的运算:当a =1时:计算b+c的值。当a=2时:计算b-c的值。当a=3时:计算b*c的值。当a=4时:计算b/c的值。其他值时:不做任何操作。main() int a,b,c; scanf(%d%d%d,&a,&b,&c); switch(a) case 1:printf(%d+%d=%dn,b,c,b+c); break; case 2:printf(%

11、d-%d=%dn,b,c,b-c); break; case 3:printf(%d*%d=%dn,b,c,b*c); break; case 4:printf(%d+%d=%dn,b,c,b/c); 程序:第4章 选择结构程序设计4.6 应用举例例4.5 输入三个数,按由小到大的顺序输出。分析:已知:输入的三个数(分别用a,b,c来存放)。求:由小到大的顺序输出的三个数。处理:(1)a,b中的小者存入a,大者存入b。 (2)a,c中的小者存入a,大者存入c。 (3)b,c中的小者存入b,大者存入c。流程图: 开始结束输入a,b,c输出a,b,c ab交换a,bNY ac交换a,cNY bc交

12、换b,cNY第4章 选择结构程序设计4.6 应用举例例4.5 输入三个数,按由小到大的顺序输出。开始结束输入a,b,c输出a,b,c ab交换a,bNY ac交换a,cNY bc) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d,%d,%d,a,b,c);第4章 选择结构程序设计4.6 应用举例例4.6 输入一个不多于4位的正整数,求出它是几位数,逆序打印出各位数字分析:已知:一个不多于4位的正整数(用x来存放)。求:该正整数是几位数,该正整数的各位数字(分别用a、b、c、d来存放千位、百位、十位、个位上的数字,由a

13、、b、c、d的值确定该正整数是几位数)。处理:用算术运算/和%取出组成x的各位上的数字,再从高位到低位判断各位上的数字是否不为零,据此确定该正整数是几位数。流程图: 取组成x的各位上的数字(a、b、c、d)开始结束输入xNY输出4位数及数字NY输出3位数及数字NYc!=0输出2位数及数字d!=0输出1位数及数字a!=0b!=0程序:#includemain() int x,a,b,c,d; scanf(%d,&x); a=x/1000; b=x%1000/100; c=x%100/10; d=x%10; if(a!=0) printf(4:%d%d%d%dn,d,c,b,a); else if

14、(b!=0) printf(3:%d%d%dn,d,c,b); else if(c!=0) printf(2:%d%dn,d,c); else if(d!=0) printf(1:%dn,d);取组成x的各位上的数字(a、b、c、d)开始结束输入xNY输出4位数及数字NY输出3位数及数字NYc!=0输出2位数及数字d!=0输出1位数及数字a!=0b!=0第4章 选择结构程序设计4.6 应用举例例4.7 输入一个数字,输出对应的星期几的英文单词。分析:已知:一个数字(17,用n来存放)。求:对应的星期几的英文单词(直接输出)。处理:由于一个星期有7天,对输入的数字进行判断,有8种情况(包括出错)

15、,用开关语句进行处理。开始输出Sun输出Mon输出Tues输出Wednes输出Thurs输出Fri输出Satur输出Error结束n其他=6=5=4=3=2=1=0流程图:程序:#include main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); break; case 1: printf(Mondayn); break; case 2: printf(Tuesdayn); break; case 3: printf(Wednesdayn); break; case 4: printf(Thursdayn); break

16、; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; default: printf(Error); 第4章 选择结构程序设计4.7 本章考点关系运算符和关系表达式。逻辑运算符和逻辑表达式。条件运算符和条件表达式。简单if语句的格式与功能。嵌套if语句的格式与功能。switch语句的格式与功能。第4章 选择结构程序设计4.8 典型试题详解1以下程序运行后的输出结果是_。main() int p=30; printf(%dn,(p/30?p/10:p%3);正确答案:3(知识点:条件运算符和条件表达式)试题分析:表

17、达式p/3的值为10,大于0,所以条件表达式(p/30?p/10:p%3)的值取p/10的值3。第4章 选择结构程序设计4.8 典型试题详解2有以下程序:main() int i=1,j=1,k=2; if(j+|k+)&i+) printf(%d,%d,%dn,i,j,k); 执行后输出结果是_。A)1,1,2B)2,2,1C)2,2,2D)2,2,3正确答案:C(知识点:逻辑运算符和逻辑表达式)试题分析:根据运算规则,对逻辑表达式(j+|k+)&i+应先计算表达式j+的值,其结果是表达式j+的值为1,j的值为2,再将表达式j+的值1与k+进行|运算,由逻辑运算符|构成的逻辑表达式在已经确定

18、一个运算对象的值为1时,其逻辑表达式的值即为1,此时不再处理其另一个运算对象,因此,不再计算k+,k的值仍为2。逻辑表达式(j+|k+)的值为1,再与i+进行&运算,需要计算表达式i+的值,表达式i+为1,i的值为2,逻辑表达式(j+|k+)&i+的值1,执行printf(%d,%d,%dn,i,j,k);语句,其结果为2,2,2。第4章 选择结构程序设计4.8 典型试题详解3以下程序输出的结果是_。main() int a=5,b=4 c=3,d; d=(abc); printf(%dn,d); 正确答案:0(知识点:关系运算符和关系表达式)试题分析:根据运算规则,对表达式(abc)应先计算

19、表达式ab的值,其结果为1,再计算1c的值,其结果为0,故d的值为0。第4章 选择结构程序设计4.8 典型试题详解4有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不等于3的是_。A)if(ca)x=1;B)if(a3)x=3; else if(ba) x=2; else if (a2) x=2; else x=3; else x=1;C)if(a3) x=3;D)if (ab) x=b; if(a2) x=2; if(bc) x=c; if(a1) x=1; if(ca) x=a;正确答案:C(知识点:简单if语句和嵌套if语句的格式与功能)试题分析:根据

20、嵌套if语句的功能,对各程序段执行后,A)的结果是x=3,B)的结果是x=3,C)的结果是x=2,D)的结果是x=3。在这类题目中,一定要注意其逻辑关系。第4章 选择结构程序设计4.8 典型试题详解5以下程序运行后的结果是_。main() int a=1,b=3,c=5; if(c=a+b) printf(yesn); else printf(non); 正确答案:yes(知识点:简单if语句的格式与功能、运算符=和=)试题分析:if语句后判断的条件是c=a+b,即将a+b的值赋给c,再判断c的值是否为真,而不是判断c是否等于a+b。运算符=和=是不同的。第4章 选择结构程序设计4.8 典型试题详解6若有以下程序:main() int a=4,b=3,c=5,t=0; if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; printf(%d%d%d,a,b,c); 执行后的输出结果为_。正确答案:503(知识点:简单if语句的格式与功能运算符=和=)试题分析:根据ab的值0,程序执行a=b;b=t;,则a=3,b=0,再根据ac的值1,程序执行t=a;,再执行a=c;c=t;,则a=5,c=3。注意,第一个if语句在其后的t=a;后已经结束,其后的a=b;b=t;是第一个if语句语法上下面的语句。同样,第一个if语句也在其后的

温馨提示

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

最新文档

评论

0/150

提交评论