




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1 选择结构和条件判断选择结构和条件判断2 2 用用ifif语句实现选择结构语句实现选择结构3 3 关系运算符和关系表达式关系运算符和关系表达式4 4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5 5 条件运算符和条件表达式条件运算符和条件表达式6 6 选择结构的嵌套选择结构的嵌套7 7 用用switchswitch语句实现多分支选择结构语句实现多分支选择结构8 8 选择结构程序综合举例选择结构程序综合举例在现实生活在现实生活中中,需要进行判断和选择的情,需要进行判断和选择的情况是很多的况是很多的C语言有两种选择语句语言有两种选择语句:(1)if语句语句,实现两个分支的选择结构,实现两个
2、分支的选择结构(2)switch语句语句,实现多分支的选择结构,实现多分支的选择结构 例例4.1 在例在例3.5的基础上对程序进行改进。的基础上对程序进行改进。题目要求题目要求是是求求 方程的根。方程的根。 由键盘输入由键盘输入a,b,c。假设。假设a,b,c的值任意,的值任意,并不保证并不保证 。需要在程序中进行。需要在程序中进行判别,如果判别,如果 ,就计算并输出方,就计算并输出方程的两个实根,程的两个实根,否则否则就输出就输出“方程无实根方程无实根”的信息。的信息。 02cbxax042 acb042 acb解题思路:解题思路:输入输入a,b,c计算计算discdisc=0计算计算x1,
3、x2输出无实根输出无实根输出输出x1,x2真真假假在在VC中运行例中运行例4.1,分别输入,分别输入6,3,1和和2,4,1,观察输出结果,观察输出结果1 用用if语句处理选择结构举例语句处理选择结构举例2 if语句的一般形式语句的一般形式 if (表达式表达式) 语句语句1 else 语句语句2 关系表达式关系表达式逻辑表达式逻辑表达式数值表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的 if (表达式表达式) 语句语句1 else 语句语句2 简单的语句简单的语句复合语句复合语句另一个另一个if语句语句等等最常用的最常用的3种种if语句语句形式形式:1. if (表达式表达式)
4、 语句语句1最常用的最常用的3种种if语句语句形式形式:1. if (表达式表达式) 语句语句1 2. 2. if (表达式表达式) 语句语句1 else 语句语句2 (有有else子句子句)3. if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式(表达式4) 语句语句4 else 语句语句5 (在在else部分又嵌套了部分又嵌套了多层的多层的if语句语句) 例例4.3 输入输入3个数个数a,b,c,要求按由小,要求按由小到大的顺序输出。到大的顺序输出。解题思路:可以先用伪代码写出算法:解题思路
5、:可以先用伪代码写出算法:uif ab,a和和b对换对换 (a是是a、b中的小者)中的小者)uif ac,a和和c对换对换 (a是三者中最小者)是三者中最小者)uif bc,b和和c对换对换 (b是三者中次小者是三者中次小者)u顺序输出顺序输出a,b,c#include int main() float a,b,c,t; scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(%5.2f,%5.2f,%5.2fn,a,b,c);
6、return 0;将将a和和b的值互换的值互换如果如果ab例:通过键盘输入字符,将输入的字符分为控制、数字、例:通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。大写字母、小写字母和其他字符等五类。 #include int main ( ) char c; printf (Enter a character:); c=getchar( ); if (c=0 & c=A & c=a & c=2 、39 、a != ( a=8 ) 、 x+(y=3)=k*z 、(a!=3)(kbcd 应表应表示为示为 不不能顺手也写为能顺手也写为 abcd
7、 如何如何表示表示数学中的逻辑关系:数学中的逻辑关系:00a9a9? 0 0=a a=b+c a=bc a=b(b=c) ab=c cba结果为结果为 1结果为结果为 结果为结果为 1结果为结果为 0结果为结果为 1 结果为结果为 0结果为结果为 4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序4.4.2 逻辑表达式逻辑表达式4.4.3 逻辑型变量逻辑型变量3种逻辑运算符:种逻辑运算符:&(逻辑与逻辑与) |(逻辑或逻辑或) !(逻辑非逻辑非)&和和|是双目是双目(元元)运算符运算符!是一目是一目(元元)运算符运算符逻辑表达式逻辑表达式u用逻辑运算符将关系表达式或其他逻
8、辑量连用逻辑运算符将关系表达式或其他逻辑量连接起来的式子接起来的式子判断判断年龄年龄在在13至至17岁岁之内?之内?age=13 & age=17判断判断年龄小于年龄小于12或大于或大于65?age65逻辑运算符的优先次序逻辑运算符的优先次序! & | (!为三者中最高为三者中最高)与其他运算符的优先次序与其他运算符的优先次序 ! (高)(高)算术运算符算术运算符关系运算符关系运算符 & 和和 |赋值运算符赋值运算符 (低)(低) 按照运算符的优先顺序可以得出:按照运算符的优先顺序可以得出: ab & cd 等价于等价于 (ab)&(cd) !b=c|d
9、a 等价于等价于 (!b)=c)|(dc&x+yc)&(x+y)3 a=8 23 0 2、x+y a 2 3、x+(y=3)=k*z !a 0+3=-1 !a 0|0 4、(x!=7) a 0!=7|971|97 5、 ( x+y3 a=8 ) !(231)!(01)!016、 ( k*q ) !(-1)7、!x !(1) !(0) 1计算顺序:计算顺序:1)表达式表达式1 | 表达式表达式2u若表达式若表达式1结果为结果为非非0,则,则不计算不计算表达式表达式2的值;的值;u若表达式若表达式1结果为结果为0,则,则计算计算表达式表达式2的值。的值。2)表达式表达式1 &
10、; 表达式表达式2u若表达式若表达式1结果为结果为非非0,则,则计算计算表达式表达式2的值;的值;u若表达式若表达式1结果为结果为0,则,则不计算不计算表达式表达式2的值。的值。1、执行、执行 int a,b,c; a=b=c=0; + +a|+ +b&+ +c; 后后a、b、c值分别为值分别为1、0、02、执行、执行 int a=5,b=6,x=1,y=2; (a=xy)&(b= xy); 后后a、b值分别为值分别为0、63、执行、执行 int a,b,c;a=b=c= - 1; + +a & + +b | + +c; 后后a、b、c值分别为值分别为0、-1、0 ma
11、in()char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,!x*!y,!x); printf(%d,%dn,x|i&j-3,ij&xb) max=a; else max=b;max = (a b) ? a : b;条件运算符条件运算符有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max = (a b) ? a : b;条
12、件条件表达式表达式条件表达式的一般形式为条件表达式的一般形式为表达式表达式?表达式表达式: 表达式表达式条件运算符的执行顺序:条件运算符的执行顺序:u求解表达式求解表达式1u若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达,此时表达式式2的值就作为整个条件表达式的值的值就作为整个条件表达式的值u若表达式若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达式,表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值条件运算符优先于赋值运算符条件运算符优先于赋值运算符条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左”以下为合法的使用方法:以下为合
13、法的使用方法:uab ? (max=a):(max=b);uab ? printf(“%d”,a): printf(“%d”,b); 例例4.4 输入一个字符,判别它是否大写输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到如果不是,不转换。然后输出最后得到的字符。的字符。#include int main() char ch; scanf(%c,&ch); if (ch=A & ch=A & ch=Z)?(ch+32):ch;在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为
14、语句称为if语句的嵌套语句的嵌套一般形式:一般形式:if( ) if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句4 内嵌内嵌ifelse总是与它上面最总是与它上面最近的未配对的近的未配对的if配对配对在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套语句的嵌套if () if () 语句语句1 else语句语句2内嵌内嵌if 限定了内嵌限定了内嵌if范围范围如:如: if(表达式表达式1) if(表达式表达式2) 语句语句1; else 语句语句2;其中的其中的else究竟是与哪一个究竟是与哪一个if配对呢配
15、对呢? 即是即是 还还是是 例例10:写出下面两程序的输出结果:写出下面两程序的输出结果1 void main( ) int x=2,y=-1,z=2; if ( xy ) if ( y0 ) z=0; else z=1; printf (”%dn”,z); void main( ) int a=1,b=3,c=5,d=4; if ( ab ) if ( cd ) x=1; else if ( ac ) if ( bd ) x=2; else x=3; else x=6; else x=7; printf (”%dn”,x); 为了使逻辑关系清晰:为了使逻辑关系清晰:(1)缩进方式缩进方式书写
16、程序书写程序: void main( ) int a=1,b=3,c=5,d=4; if ( ab ) if ( cd ) x=1; else if ( ac ) if ( bd ) x=2; else x=3; else x=6; else x=7; printf (”%dn”,x); (2)适当地加花括号:)适当地加花括号: x=-3; if (x0) y=-1;printf (”x0)y=1; printf (”x0,y=%dn”,y);把上面与下面比较把上面与下面比较x=-3;if (x=0) if (x0) y=1;printf (”x0,y=%dn”,y);else y=-1;pr
17、intf (”x0,y=%dn”,y); 例例4.5有一函数有一函数: 编一程序编一程序,输入一个输入一个x值值,要求输出相应要求输出相应的的y值。值。)0(1)0(0)0(1xxxy解题思路:解题思路:方法方法1(1) 先后用先后用3个独立的个独立的if语句处理:语句处理:输入输入x若若 x 0, 则则y = 1输出输出x和和yscanf(%d,&x);if(x0) y = 1;printf(x=%d,y=%dn,x,y);解题思路:解题思路:方法方法2(2) 用一个嵌套的用一个嵌套的if语句处理:语句处理:输入输入x若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则
18、y = 0 否则否则 y = 1输出输出x和和yscanf(%d,&x);if(x0) y=-1;else if(x=0) y=0; else y=1;printf(x=%d,y=%dn,x,y);解题思路:解题思路:方法方法2(2) 用一个嵌套的用一个嵌套的if语句处理:语句处理:输入输入x若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1输出输出x和和yscanf(%d,&x);if(x=0) if (x0) y=1; else y=0;else y=-1;printf(x=%d,y=%dn,x,y);提倡提倡内嵌内嵌if放在
19、放在else中中switch(表表达式达式) case 常常量量1: 语句语句1; case 常常量量2: 语句语句2; case 常常量量n: 语句语句n; default: 语句语句n+1; 常量常量符号常量符号常量(整型或字符型整型或字符型) switch()不要忘不要忘记空格记空格不带不带; ;void main() int a; scanf(%d,&a); switch(a) case 1: printf(Mondayn); case 2: printf(Tuesdayn); case 3: printf(Wednesdayn); case 4: printf(Thursda
20、yn); case 5: printf(Fridayn); case 6: printf(Saturdayn); case 7: printf(Sundayn); default: printf(errorn);只想输出Wednesday,如何处理?Switch语句常用形式:语句常用形式:switch (表达式表达式) case 常量常量1 :语句:语句1; break; case 常量常量2 :语句:语句2; break; case 常量常量n:语句:语句n; break; default : 语句语句n+1; 最后一条语句后面不加break在使用在使用switch语句时还应语句时还应注意注
21、意以下几点:以下几点: 1)case后的各常量表达式的值不能相同,后的各常量表达式的值不能相同,否则会出现错误。否则会出现错误。 2)case后,允许有多个语句,可以不用后,允许有多个语句,可以不用括起来。括起来。 3)case和和default子句的先后顺序可以变子句的先后顺序可以变动,而不会影响程序执行结果。动,而不会影响程序执行结果。 4)default子句可以省略不用。子句可以省略不用。 void main() int a; scanf(%d,&a); switch(a) case 1: printf(Mondayn); break; case 2: printf(Tuesda
22、yn); break; case 3: printf(Wednesdayn); break; case 4: printf(Thursdayn); break; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; case 7: printf(Sundayn); break; default: printf(errorn);例:若定义:例:若定义:float w; int a=2, b; 则合法的则合法的switch语句是语句是 Aswitch (w) Bswitch (a+b) case 1.0:printf(”
23、*”); case 1 printf(”*n”); case 2.0:printf(”*”); case a rintf(”*n”); Cswitch (w+1.76) Dswitch (a) ; case k-1 :printf(”*”); case 1: printf(”*n”); default : printf(”n”); case 2: printf(”*n”); case 1+2:printf(”*”); default: printf(”n”); 不能为变量不能为变量不能加分号不能加分号例例4.6 从键盘输入的一个等级制成绩,然从键盘输入的一个等级制成绩,然后输出对应的百分制成绩
24、。转换规则如后输出对应的百分制成绩。转换规则如下:下: A:85100 B :7084 C :6069 D 60void main( )char grade; scanf(“%c”,&grade); switch(grade) case A:printf(”85100n”); break; case B:printf(”7084n”); break; case C:printf(”6069n”); break; case D:printf(”60n”); break; default: printf(”Errorn”); 例:从键盘输入的一个百分制成绩,然例:从键盘输入的一个百分制成绩
25、,然后输出对应的五分制成绩。转换规则如后输出对应的五分制成绩。转换规则如下:下: 90100 A 8089 B 7079 C 6069 D 100|cj0) printf(”Input error!”); else switch(cj/10) case 6:printf(”Dn”); break; case 7:printf(”Cn”); break; case 8:printf(”Bn”); break; case 9: case 10:printf(”An”); break; default: printf(”En”); 整数除整数整数除整数例例:计算器程序。用户输入运算数和四则运算符,计
26、算器程序。用户输入运算数和四则运算符,输出计算结果。输出计算结果。void main()void main() float a,b; float a,b; char c; char c; printf(input expression: a+(-,printf(input expression: a+(-,* *,/)b n);,/)b n); scanf(%f%c%f, &a, &c, &b); scanf(%f%c%f, &a, &c, &b); switch(c) switch(c) case +: printf(%fn,a+b);break; case +: printf(%fn,a+b);break; case -: printf(%fn,a-b);break; case -: printf(%fn,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省曲靖市2025届高三上学期第一次教学质量监测试题 物理 含解析
- XX学院附属中学班级量化管理考核实施方案
- 事业单位聘用合同续签书
- 停车场承包合同新
- 厂房电气安装安装合同
- 水上光伏预制管桩施工方案
- 韶关采光井造景施工方案
- 汽车零部件生产质量控制题库
- 2025年幼儿园综合课活动标准教案
- 四川桥梁栏杆定制施工方案
- 数独六宫格练习题
- 《自动升降跳高架》课件
- 2023CSCO肾癌诊疗指南
- 中医诊断学(全套课件303P)-课件
- 装修工程竣工验收自评报告
- 阳台装修合同
- MULAND深圳蕉内前海中心办公室方案
- 建筑工程安全管理论文15篇建筑工程安全管理论文
- 基于三菱FX系列PLC的五层电梯控制系统
- 拉拔试验原始记录
- 温室韭菜收割机设计学士学位论文
评论
0/150
提交评论