C语言之第五章选择结构程序设计.ppt_第1页
C语言之第五章选择结构程序设计.ppt_第2页
C语言之第五章选择结构程序设计.ppt_第3页
C语言之第五章选择结构程序设计.ppt_第4页
C语言之第五章选择结构程序设计.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

复习顺序结构编程 练习:键盘输入4个数,求平均值。 参考代码: #include void main() float a,b,c,d,av; scanf(“%f,%f,%f,%f“, av=(a+b+c+d)/4; printf(“av=%.2fn“,av); 第五章选择结构程序设计 教学目标与要求: 掌握关系运算符和关系表达式和逻辑运算符和 逻辑表达式。 能够熟练掌握和运用if 语句、switch 语句,能设 计出具有判断能力的程序,重点学会设计程序 的算法。 单分支、双分支、多分支 选择其一 例: if (xy) z=x; else z=y; 例: if( xy 5.1 关系运算符与关系表达式 1、关系运算符 假值用0表示,非0都为真; 关系运算符与优先级: = (高) = != (低) 结合性:左到右 2、关系表达式 赋值运算 关系运算 算术运算(高) 例: ca+b 等价于 c(a+b) a=bc等价于 a=(bc) 5.2 逻辑运算符与逻辑表达式 1、逻辑运算符: scanf(“%f,%f“, if (ab) printf(“a=%f,b=%fn“,a,b); t=a; a=b; b=t; (2)格式二 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句n #include void main() int score; scanf(“%d“, if (score=90) printf(“score=%d A等n“,score); else if (score=80) printf(“ score=%d B等n“,score); else if (score=70) printf(“score=%d C等n“,score); else if (score=60) printf(“score=%d D等n“,score); else printf(“score=%d E等n“,score); 例3:学生成绩分等级。 90-100 “A”,80-89 “B”,70-79 “C”,60- 69 “D”,0-60 “E”. C5_cjfd.c 2、if 语句的嵌套 if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句3 else 语句4 说明: 多个嵌套的结果,else存在匹配的问题: else 总是与最近的尚未匹配的 if 匹配。 如if和else 数目不同,可用确定配对关系。 程序1: void main() float x,y; scanf(“%f”, if (x0) 输入任意x,求y. -1 (x0) 程序2: void main() float x,y; scanf(“%f”, if (x=0) if (x0) y=1; else y=0; else y=-1; printf(“x=%f y=%fn”,x,y); -1 (x0) 程序3: void main() float x,y; scanf(“%f”, y=-1; if (x!=0) if (x0) y=1; else y=0; printf(“x=%f y=%fn”,x,y); 练习: 给一个不多于5位的正整数,判断是几位 数。 xt5_7.c 参考代码: void main() int num,place; printf(“请输入一个整数(0-99999)“); scanf(“%d“, if (num9999) place=5; else if (num999) place=4; else if (num99) place=3; else if (num9) place=2; else place=1; printf(“place=%dn“,place); 3、条件运算符 if语句中,表达式真假时,都给同一变 量赋值,可用条件运算符。 格式为: 表达式1?表达式2:表达式3 例:if (ab) max=a; else max=b; 可改为: max=(ab)?a:b 说明: 先求表达式1,如果满足,则计算表 达式2;否则,计算表达式3; 条件运算优于赋值运算 复习: if语句格式: 格式一: if (表达式) 语句1 else 语句2 格式二: if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句n #include void main() char c; c=getchar(); 练习:判断由键盘输入的字符是数字、大 写字母、小写字母、空格还是其他字符。 if(c=0) printf(“%c 是字符!n“,c); else if (ca) printf(“%c 是小写字母!n“,c); else if (cA) printf(“%c 是大写字母!n“,c); else if (c= ) printf(“%c 是空格!n“,c); else printf(“%c 是其他!n“,c); 5.4 多分支语句 switch 格式: switch(表达式) case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式n: 语句n; default: 语句n+1; switch(表达式) case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式n: 语句n; default: 语句n+1; 说明: lswitch 内的表达式任意类型,与常量表达式类型一致。 lcase 语句后有 break终止,否则将执行下面case 语句 。 lswitch与if不同,只能测试相等,不能像 if 作关系比较, 如大于、小于之类; 例5 : 输入数字,输出星期几? 输入0,输出”星期日“ 输入1,输出”星期一“ 输入6,输出”星期六“ 参考代码: #include void main() int n; scanf(“%d“ , switch(n) case 0: printf(“星期日n“);break; case 1: printf(“星期一n“);break; case 2: printf(“星期二n“);break; case 6: printf(“星期六n“);break; default: printf(“error!n“); 例6:学生成绩分等级。90-100 “A”,80 -89 “B”,70-79 “C” ,60-69 “D”,0-60 “E”.给出一个等级,输出 相应分数段。 C5_djcj.c 参考代码: #include void main() char grade; grade=getchar(); switch(grade) case A: printf(“90-100n“);break; case B: printf(“80-89n“);break; case C: printf(“70-79n“);break; case D: printf(“60-69n“);break; case E: printf(“50-59n“);break; default: printf(“error!n“); 5.5 例子选讲 例1:学生成绩分等级。根据分数输出相 应等级.90-100 “A” , 80-89 “B”,70-79 “C”,60-69 “D”,0-60 “E” xt5_6.c 分析: 处理成绩 temp=score/10; #include void main()void main() intint score,tempscore,temp; ; char grade; char grade; printf(“printf(“请输入学生成绩请输入学生成绩:“);:“); scanf(“%d“, ); temp=score/10; temp=score/10; switch(tempswitch(temp) ) case 10: case 10: case 9: grade=A; break; case 9: grade=A; break; case 8: grade=B; break; case 8: grade=B; break; case 7: grade=C; break; case 7: grade=C; break; case 6: grade=D; break; case 6: grade=D; break; case 5: case 5: case 4: case 4: case 3: case 3: case 2: case 2: case 1: case 1: case 0: grade=E case 0: grade=E ; ; printf(“printf(“成绩成绩:%d:%d 等级等级:%c“,score,grade:%c“,score,grade); ); 例2:求ax2+bx+c=0的根. C5_6.c 分析: 三种情况 参考代码:参考代码: #include #include void main() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f“, disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(“x1=%8.4f x2=%8.4fn“,x1,x2); else p= ; q= ; printf(“x1=%8.4f+%8.4fin“,p,q); printf(“x2=%8.4f-%8.4fin“,p,q); -b/(2*a); sqrt(-disc)/(2*a) 例3: 给一个不多于5位的正整数,判断是几 位数, 并且按逆序输出各位数字。Xt5_7.c If语句求位数.9999,999,999,=0 求各位数字: 如:wan=num/10000 qian=(num-wan*10000)/1000 . 定义变量: num, ge,shi,bai,qian,wan,place 输出结果 #include void main() int num; int ge,shi,bai,qian,wan,place; printf(“请输入一个整数(0-99999):“); scanf(“%d“, if (num9999) place=5; else if (num999) place=4; else if (num99) place=3; else if (num9) place=2; else place=1; printf(“place=%dn“,place); wan=num/10000; qian=(num-wan*10000)/1000; bai=(num-wan*10000-qian*1000)/100; shi=(num-wan*10000-qian*1000-bai*100)/10; ge=num-wan*10000-qian*1000-bai*100-shi*10; printf(“每位数字为:“); switch(place) case 5: printf(“%d,%d,%d,%d,%dn“,wan,qian,bai,shi,ge); printf(“逆序数字为:“); printf(“%d,%d,%d,%d,%dn“,ge,shi,bai,qian,wan); break; case 4:printf(“%d,%d,%d,%dn“,qian,bai,shi,ge); printf(“逆序数字为:“); printf(“%d,%d,%d,%dn“,ge,shi,bai,qian); break; case 3:printf(“%d,%d,%dn“,bai,shi,ge); printf(“逆序数字为:“); printf(“%d,%d,%dn“,ge,shi,bai); break; case 2:printf(“%d,%dn“,shi,ge); printf(“逆序数字为:“); printf(“%d,%dn“,ge,shi); break; case 1:printf(“%dn“,ge); printf(“逆序数字为:“); printf(“%dn“,ge); 例4:判断某一年是否闰年. C5_5.c 闰年条件符合下面两者之一. (1)能被4整除,但不能被100整除. (2)能被100整除,又能被400整除. (year%4=0 scanf(“%d“, if ( ) printf(“%4d is a leap yearn“,year); else printf(“%4d is not a leap yearn“,year); (year%4=0&year%100!=0)|(year%400=0) 例5:企业发放的奖金根据利润提成。利润(I)低

温馨提示

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

评论

0/150

提交评论