C语言 第4章 选择结构.ppt_第1页
C语言 第4章 选择结构.ppt_第2页
C语言 第4章 选择结构.ppt_第3页
C语言 第4章 选择结构.ppt_第4页
C语言 第4章 选择结构.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

if 语句 关系表达式和逻辑表达式 if 语句的变形及嵌套 多重选择语句 (switch 语句) 本章小结 本章内容 第4章 选择结构程序设计 第四章第四章 选择结构程序设计选择结构程序设计 问题与讨论: 1、从键盘输入一个数,求输入的整数的绝对值并将 其输出; 2、将考试成绩不及格的学生名单打印出来; 3、解一元二次方程,求出相应的实根或复根。 对于上述或类似问题,需要进行某种判断, 并根据不同情况进行不同的处理,怎样进行程 序设计? 第四章第四章 分支结构程序设计分支结构程序设计 解决办法: 1、引入新的程序结构,选择结构, 有时也称 判断结构 或分支结构。 2、为了和分支结构相配合,同时还要 引入逻辑表达式的概念。 3、有三种形式可进行分支结构的程序设计 A、 if 结构 B、多重选择结构(switch语句) C、无条件转移结构(goto语句) 第4章 选择结构程序设计 【例4.1】输入两个正整数,并按从小到大的顺序输出。 void main( ) int a,b,t; scanf(“%d,%d“, prinft(“%d,%d“,a,b); void main( ) int a,b; scanf(“%d,%d“, if (ab) prinft(“%d,%d“,b,a); else prinft(“%d,%d“,a,b); 图3-2 变换a和b的值 if (ab) t=a; a=b; b=t; if 条件“真” 复合语句1 else 复合语句2 (1) if,else 为关键字 (2)如果语句块超过一条语句,则要用一对大括号 将语句块括起作为复合语句 (3) else 可省 语法:语法: 说明:说明: if if 语句语句 计算逻辑表达式的值 真否? 复合语句1复合语句2 执行复合语句后的语句 F T ifelse 的执行过程 【例4.6】编写程序,求输入的整数的绝对值并将其输出。 void main( ) int x,x1; scanf(“%d”, x1=x; if(xsecond #include void main( ) int first, second; printf(“Enter two numbers: “); scanf(“%d%d“, if(firstsecond) printf(“firstsecond“); else printf(“first= 20000.15 1000 M0 void main( ) 程序 代码 if ( m=250 t=m*(1-d), /计算应付款 printf( “实际应付款:%f”,t); float m,d,t; printf(“请输入购物金额: ”); scanf(“%f”, 2000 1000 500 250 0.15 0.1 0.050.0750 假 假 假 假 真 真 真 void main( ) float m,d,t; printf(“请输入购物金额: ”); scanf(“%f”, if ( m=250 t=m*(1-d), /应付款 printf( “实际应付款:%f”,t); 形式: if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 . . . else if (表达式m)语句m else 语句 n 这样改写的优点? 的根的根 1 1、算法分析:、算法分析: 2 2、数据结构:、数据结构: 由于问题简单,只需用到一些单精度实数 【例例】 求一元二次方程求一元二次方程 第4章 选择结构程序设计 3 3、伪代码、伪代码 输入方程系数 a,b,c 计算判别式 d=b*b-4*a*c if 判别式大于等于 0 then 计算两个实根 定位输出光标 打印结果 else 计算实部 计算虚部 定位输出光标 打印结果 end program 第4章 选择结构程序设计 #include #include void main() float a,b,c,d,x1,x2,p,q; printf( “输入方程系数:” ); scanf(“%f,%f,%f”, d=b*b-4*a*c; if ( d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf( “x1=%f,x2=%fn”,x1,x2); else p=-b/(2*a); q=sqrt(-d)/(2*a); printf( “x1=%f+i%f,x2=%f-i%fn”,p,q,p,q); 一、逻辑量的概念 逻辑值: “真”、“假”,或 T 、F 表示方式: 0 表示“假”,非0表示“真” 系统真值: 1 二、关系运算符 关系运算符 含义 例子 结果 优先级 大于 4+69 = 大于或等于 6=5 main() int a,b; a=10=5 main() int a,b; a=6*77+8; b=7!=73; printf(“%d,%dn”,a,b); 输出结果: 1,1 三、关系表达式 !(非), scanf(“ %d,%d “, if (ab ? prinft(“ %d,%d “,b,a):prinft(“ %d,%d “,a,b); 改写后 【例?:】 从键盘输入两个整数,按大小顺序输出 【例】 从键盘输入一字符,如果为Y,则打印是,若为N,打印否, 其它字符,打印输入错误。 #include void main() char a; printf(“输入一个字符:”); a=getchar(); if( a=“Y” | a= =“N” ) if (a=“Y”) printf( “是”); else printf( “否”); else printf( “输入数据不合要求”); 嵌套不能太深,一般以三层为限, 嵌套太深,容易出错。 【例4-12】用户从键盘输入3个整数,找出并输出其中数值最 大的那一个。如果其中有一个以上的最大数(两数相等的情况 ),也要表示出来。 #include void main() int a,b,c; printf(“Enter 3 numbers: “); scanf(“%d%d%d“, if(ab) if(ac) printf(“max. a=%dn“, a); else if(a=c) printf(“max. a=c=%dn“, c); else printf(“max. c=%dn“, c); else if(a= =b) if(ac) printf(“max. a=b=%dn“, a); else if(a= =c) printf(“a=b=c=%dn“, c); else printf(“max. c=%dn“, c); else if(bc) printf(“max. b=%dn“, b); else if(b=c) printf(“max. b=c=%dn“, b); else printf(“max. c=%dn“, c); #include void main() int x,y,z; printf(“Iput x,y,z:”); scanf(“%d,%d,%d”, if ( x0) if (y0 ) if (z0) printf( “所有数据大于零!”); else printf( “只有X,Y大于零!”); else if (x=0) if (y=0) if (z=0) printf( “所有数据都为零!”); else printf( “只有X,Y等于零!”); else printf( “X 小于零!”); 嵌套不能太深,一般以三层为限, 嵌套太深,容易出错。 【例】从键盘输入三个整数,判断其正负情况 #include void main() int x,y,z; printf(“Iput x,y,x:”); scanf(“%d,%d,%”, if ( x0 else if (x0 else if (x=0 else if (x=0 else if (x=A printf(“输入数字 1- 7: ”); scanf(“%d”, if (i=1) printf ( “Today is Monday!n”); else if (i=2) printf (“Today is Tuesday!n”); else if (i=3) printf (“Today is Wednesday !n”); else if (i=4) printf( “Today is Thursday!n”); else if (i=5) printf( “Today is Friday!n”); else if (i=6) printf( “Today is Saturday!n”); else printf( “Today is Sunday!n”); 【例 】 输入星期中的某一天,显示对应的英文 是否有更好的办 法来解决多分支 程序结构? 语法: switch(表达式) case 常量表达式1:语句块1 case 常量表达式2:语句块2 . . . case 常量表达式N:语句块N default: 语句块N+1 switchswitch多重选择语句多重选择语句 说明: 1. switch后的表达式可以是char, byte, short, or int 类型 2. case后的表达式与switch后的表达式相 等时, case后的语句被执行。若一个 相等的也没有时,执行default后面语句 。若没有default时,则结束switch语句 3.case后的表达式必须互不相同,否则出错 4.case 与 default 出现的顺序不影响执行结 果。 5. 执行完一个case语句块后,流程转到下 一个case语句继续执行。 6. 在执行过程中碰到break语句,程序退 出switch结构。 void main() int i; printf( “输入数字 1- 7: ”); scanf(“%d”, switch( i ) case 1: printf( “Today is Monday!”); case 2: printf( “Today is Tuesday!”); case 3: printf( “Today is Wednesday !”); case 4: printf( “Today is Thursday!”); case 5: printf( “Today is Friday!”); case 6: printf( “Today is Saturday!”); default: printf( “Today is Sunday!”); 【例 switch】 用 switch 语句重写打印星期程序。 void main() int i; printf( “输入数字 1- 7: ”); scanf(“%d”, if (i=1) printf( “Today is Monday!”); else if (i=2) printf( “Today is Tuesday!”); else if (i=3) printf( “Today is Wednesday !”); else if (i=4) printf( “Today is Thursday!”); else if (i=5) printf( “Today is Friday!”); else if (i=6) printf( “Today is Saturday!”); else printf( “Today is Sunday!”); 语法:break; 功能: 1: 退出所在switch语句 2: 退出所在循环(for,while,do) break 语句 格式: continue ; 功能:忽略continue 以下的循环体,重新回 到循环开始(对continue 所在循环有 效)。 continue 语句 【例 】 用 switch 语句重写前例的程序 void main() char a; printf( “输入一个字符:” ); a=getchar(); if (a=“Y” | a=“N” ) if (a=“Y” ) printf( “是n”); else printf( “否n”); else printf( “字符不合要求!n”); void main() char a; printf( “输入字符:”); a=getchar(); switch (a) case Y: printf( “是n”); break; case N: printf( “否n”); break; default: printf( “字符不合要求!n”); 【例 4-9B】 在屏幕上显示菜单 分析: 程序首先在屏幕上将功能显示出来,用户根据需要选 择相应的功能,程序根据用户的选择执行相应的程序 段。 对于这类程序,往往是用户输入一个英文字母,然后 程序根据字母来断别程序该执行什么程序段,故一般用 switch语句比较方便。 2 源程序清单 switch(a) case i: printf(“调用输入模块!”); break; case o: printf(“调用输出模块!”); break; case l: printf(“调用查找模块!”); break; case q: printf(“调用退出模块!”); break; main() int char a;

温馨提示

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

评论

0/150

提交评论