c语言4PPT课件_第1页
c语言4PPT课件_第2页
c语言4PPT课件_第3页
c语言4PPT课件_第4页
c语言4PPT课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、2021/3/91第四章第四章 选择结构选择结构2021/3/92回顾:1、输入的命令是什么?2、输出的命令是什么?3、输出一个如下结果:例:已知a=3.1415927;保留3位小数,前面带2空格的。printf(“%7.3f ”,a);4、scanf在输入数据数据的时候必须用间隔符(空格、回车,Tab)隔开2021/3/93目标 熟练使用关系运算符 熟练使用逻辑运算符 熟练使用if 结构 熟练使用嵌套 if 结构 熟练使用 switch 结构 理解条件运算符的用法2021/3/944.1关系运算和逻辑运算关系运算和逻辑运算一、一、C语言中的逻辑值语言中的逻辑值语言中规定:(1)用0、1 表示

2、逻辑假和真值;语言没有专门的逻辑值,而是用来表示“真”,用表示“假”。(2)任何基本类型的值都可作为逻辑值使用。所有非0的值被当作“真”使用,而0值被当作“假”使用二、关系运算符和关系表达式关系运算符和关系表达式 1.C语言的关系运算符共种:(大于)= (大于等于)(小于) (num3 num4)num=40;num/10 != 2gender = m真假=如果 gender = f如果 gender = m2021/3/98三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式1)C语言提供了三种逻辑运算符,分别是: &逻辑与 |逻辑或 !逻辑非结合性结合性:自左至右优先级次序优先级次

3、序:! 高于& 高于|逻辑表达式的值:逻辑表达式的值:0,1小总结:小总结: 算术运算符 + - * / % (第二章) 赋值运算符 = += -+ *= /= %=(第二章) 关系运算符 = = = != 逻辑运算符 ! & | 优先级(高到低)!、算术运算符、关系运算符、优先级(高到低)!、算术运算符、关系运算符、&、|、赋值运算符、赋值运算符2021/3/99逻辑运算符 运算运算运算符运算符表达式表达式逻辑“与”&operand1 & operand2逻辑“或”|operand1 | operand2逻辑“非”!operand1 逻辑运算符用于连接

4、一个或多个条件,判断这些条件是否成立 逻辑运算符的类型为:2021/3/910 逻辑“与”运算符 &所有学科及格考勤率达到 75%留级留级留级升级YesNoNoNoNoYesYesYes2021/3/911逻辑“与”运算符 &表达式表达式 1 1表达式表达式 2 2结果结果000010100111所有学科及格考勤率达到 75%留级留级NoNo升级YesYes留级NoYes留级留级NoYes2021/3/912 例如:已知a=2;b=4;c=4;d=6(ab)&(cb)&(cd) (ad) (ab)&(cd) 2021/3/913逻辑“或”运算符 |无法支

5、付可支付可支付可支付YesNoNoNoNoYesYesYes购物帐单信用卡2021/3/914现金信用卡逻辑“或”运算符 |表达式 1表达式 2结果000011101111无法支付NoNo可支付NoYes可支付NoYes可支付YesYes2021/3/915 例如:已知a=2;b=4;c=4;d=6(ab)|(cb) |(cd) (ad) (ab) |(cd)2021/3/916逻辑“非”运算符 !表达式结果1001天气 NOT 阴天真真假带伞操作不带伞2021/3/917逻辑“非”运算符 ! !(真)的值为0 !(假)的值为1 !(非零)的值0 !(零)的值为1例如: a=2;b=4;c=0

6、 !(ab) !(ab) !(a) !(0) 2021/3/918逻辑运算符总结所有学科所有学科及格及格考勤率达到考勤率达到 75%&只有当两个两个条件都为真真时结果才为真只要任何任何一个条件为真真时结果就为真对原条件取反取反,即:如果原条件为假时结果就为真|!优先次序:!(非) &(与)|(或)逻辑运算符中的&和|低于关系运算符,!高于算术运算符2021/3/919一、数学上一、数学上0 x0&xc&b=c2、a|b+c&b-c3、!(ab)&c|1 答案:1、0 2、1 3、1已知a=1,b=0;则y=a|b+;2021/3/9214

7、.2条件结构 条件结构就是需要根据条件进行判断,然后执行不同的操作一、简单 if 语句的一般形式为:if () 说明:说明:必须是一条语句,若是必须是一条语句,若是 多条,用花括号括起来多条,用花括号括起来 如果条件为真,if 语句执行一个语句或一组语句; 如果条件为假,则执行 if 语句后面的语句(如果有)。2021/3/922二、 if-else 语句的一般形式为:语句的一般形式为:(if-else必须成对出现必须成对出现) if () else 如果条件为真,执行 if 后面的一个语句或一组语句; 如果条件为假,则执行 else 后面的语句。2021/3/923三、三、If语句的执行过程

8、语句的执行过程 首先判定if后面圆括号中表达式的值。如果为真,则执行其后的if子句,然后执行if语句后的下一条语句;若果表达式的值为假,则跳过if子句,直接执行if语句的下一条语句2021/3/924例题例题4.1:输入两个数,分别放入:输入两个数,分别放入x和和y中,若两数不相等,则输出大数;中,若两数不相等,则输出大数;若相等,则输出字符串若相等,则输出字符串x=y和和x的值的值 #include void main() int x,y; printf(“Enter x&y:n”); scanf(“%d%d,&x,&y); printf(“x,y:%d%dn”,x,

9、y); if(xy)printf(“x=%dn”,x); if(yx)printf(“y=%dn”,y); if(x=y)printf(“x=y %d:n ,x); 2021/3/925例例4.2 main() int a,b,c,t; printf(“input a,b,c”):scanf(“%d%d%d”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,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(“%d,%d,%dn”,a,b,c

10、);例例 输入两个值给变量输入两个值给变量a、b,然后输,然后输出比较大的数出比较大的数 main() int a,b,max; scanf(“%d%d”,&a,&b); max=ab?a:b;printf(“max=%d,max);2021/3/926#include void main()int num;printf(n请输入一个整数:); scanf (%d,&num);if(num % 2) = 0)printf(%d 是一个偶数。n,num); elseprintf(%d 是一个奇数。n,num);if-else语句的示例内存内存num57请输入一个整数:57

11、57 是一个奇数。2021/3/927问题描述: 判定给定的年份是否为闰年。提示:闰年的判定规则为:能被 4 整除但不能被 100 整除的年份,或能被 400 整除的年份。 #include void main() int year; printf(n 请输入年份:); scanf(%d,&year); if(year % 4 =0 & year % 100 != 0) | (year % 400 = 0) printf(n %d 年是闰年 n , year); else printf(n %d 年不是闰年 n , year);综合示例1请输入年份:20052005 年不是闰年

12、2021/3/928由于由于if和和else子句中可以是任意合法的子句中可以是任意合法的C语句,因此自然也可语句,因此自然也可以是以是if语句,称此为嵌套的语句,称此为嵌套的if语句。语句。4.2.2嵌套的if语句1.if子句中嵌套具有子句中嵌套具有else子句的子句的if语句语句 if(表达式1) if(表达式2) 语句1 else 语句2 else 语句32.在在if子句中嵌套不含子句中嵌套不含else子句的子句的if语句语句 if(表达式1) if(表达式2) 语句1else 语句22021/3/929if (x 0) if (y 1) z = 1;else /*这个 else 部分属于

13、哪个 if?*/ z = 2; C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。提倡使用大括号括起来以避免看起来有二义性。2021/3/930 3.在在else子句中嵌套子句中嵌套if语句语句 if(表达式1)语句1 else if(表达式2) 语句2 else 语句3 或写成 if(表达式1)语句1 else if(表达式2) 语句2 else 语句32021/3/931例题例题4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为分以上的等级为A,60分以下的等级为

14、分以下的等级为E,其余每,其余每10分为一个等级。分为一个等级。程序如下:程序如下:#includemain() int g; printf(“Enter g:”);scanf(“%d”,&g); printf(“g=%d:”,g);if(g=90)printf(“An”);else if (g =80)printf(“Bn”); else if (g =70)printf(“Cn”); else if (g =60)printf(“Dn”); else printf(“En”);2021/3/932 #include main() int g; printf(Enter g:);sc

15、anf(%d,&g); printf(g=%d:,g); if(g=90)printf(An); if (g=80)printf(Bn); if (9=70)printf(Cn); if (g=60)printf(Dn); if(g100) value=50;else value=100;value = num 100 ? 50 : 100;(1)(0)条件表达式使用使用“if-else”的等同代码的等同代码 假设 num = 200 value = num 100;? 50 : 100200value=502021/3/935条件运算符示例问题描述:个人所得税收取规定:工资大于100

16、0元的部分将扣除5的个人所得税。小于1000元的部分不扣除个人所得税。要求用户输入基本工资,计算税后工资。 #include void main()double sal;double rate;printf(n 请输入基本工资:);scanf(%lf,&sal);rate= (sal=1000) ? 0 : 0.05;sal=sal-(sal-1000)*rate;printf(n 税后工资为:%7.2f n,sal); 请输入基本工资:1500税后工资为:1475.002021/3/936 运用一次运用一次if或或if-else,只有两种选择。若是多重选,只有两种选择。若是多重选择,

17、需要多次嵌套,程序复杂,此时引入择,需要多次嵌套,程序复杂,此时引入switch语句。语句。 例题例题4.5 #include main() int g; printf(“Enter g:”);scanf(“%d”,&g); printf(“g=%d:”,g); if(g=90)printf(“An”); else if (g =80)printf(“Bn”); else if (g =70)printf(“Cn”); else if (g =60)printf(“Dn”); else printf(“En”); 2021/3/937switch 结构 3-1printf(“这是迈克尔

18、,身高 180cm,加利福尼亚第 12 大街”);printf(“这是丹尼尔,身高 193cm,现居住地不明,1998 年 12 月 12 日在佛罗里达被捕”);printf(“这是吉姆,身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕”);printf(“未发现匹配项。对不起!”);停止搜索停止搜索停止搜索停止搜索警察记录嫌疑犯照片不是这是吉姆,身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕不是是2021/3/938 switch-case 语句是多路判断语句 switch 语句计算条件表达

19、式并对照多个常数值进行检查switch 结构 3-2switch (表达式) case 常量 1:语句;break; case 常量 2:语句;break;default:语句;计算表达式的值如果等于常量1 如果等于常量2 如果没有找到匹配的值 2021/3/939switch 结构 3-3 在使用switch结构时应注意以下几点: 在case后的各常量表达式的值不能相同,否则会出现错误; case和常量表达式之间一定要有空格。例如case 0: 各case和default子句的先后顺序可以变动,而不会影响程序执行结果; default子句可以省略; 遇到break则跳出整个循环,没有继续往下

20、执行。2021/3/9401、用、用switch语句改写例题语句改写例题4.5程序如下:程序如下:(演示:没有演示:没有break)#includemain() int g; printf(“Enter g:”);scanf(“%d”,&g); printf(“g=%d:”,g);switch(g/10)case 10:case 9:printf(“An”);case 8:printf(“Bn”);case 7: printf(“Cn”);case 6:printf(“Dn”);default:printf(“En”);2021/3/9412、用、用switch语句改写例题语句改写例题

21、4.5程序如下:程序如下:(演示:带有演示:带有break)#includemain() int g; printf(“Enter g:”);scanf(“%d”,&g); printf(“g=%d:”,g);switch(g/10)case10:case9:printf(“An”);break;case8:printf(“Bn”); break;case7: printf(“Cn”); break;case6:printf(“Dn”); break;default:printf(“En”);2021/3/942switch 结构示例问题描述:要求用户输入一个字符值并检查它是否为元音字母。 char in_char;printf(n 请输入一个小写字母: );scanf(%c, &in_char);switch(in_char) case a: printf(n 您输入的是元音字母 an); break; case e: printf(n 您输入的是元音字母 en); break; case i: printf(n 您输入的是元音字母 in); break; case o: printf(n 您输入的是元音字母 on); break; case u: printf(n 您输入的是元音字母 un); break;

温馨提示

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

最新文档

评论

0/150

提交评论