C程序设计教程(第2版)第3章 分支结构程序设计_第1页
C程序设计教程(第2版)第3章 分支结构程序设计_第2页
C程序设计教程(第2版)第3章 分支结构程序设计_第3页
C程序设计教程(第2版)第3章 分支结构程序设计_第4页
C程序设计教程(第2版)第3章 分支结构程序设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3 3章章 分支结构程序设计分支结构程序设计3.1 3.1 关系运算符和关系表达式关系运算符和关系表达式 P56返回返回3.1.1 3.1.1 关系运算符(第关系运算符(第4 4次课)次课) 、=、0” 隐含隐含 x 的值是否大于的值是否大于0 P563.1.2 3.1.2 关系表达式关系表达式n判断结果只有两种可能:判断结果只有两种可能:“真真”或或“假假”n关系成立为关系成立为“真真”,不成立为,不成立为“假假”只能是只能是0或或1表达式的值表达式的值1 结果为结果为“真真”时时0 结果为结果为“假假”时时P56x=1;printf(“%d”, x 0); 真真输出输出 1x=3; a

2、=x 0;b=x5;printf(“%d”, a=b ); 真真 a的值的值1真真 b的值的值1真真 输出输出1x=-3;printf(“%d”,0 = x = 2) ; 假假 0 = 2输出输出1注意:表达式注意:表达式0=x=0 & x=2 n| : 逻辑或逻辑或 x3 n! : 逻辑非逻辑非 ! (x3) P573.2.2 3.2.2 逻辑表达式逻辑表达式n判断结果只有两种可能:判断结果只有两种可能:“真真”或或“假假”n逻辑运算的结果为非零时:逻辑运算的结果为非零时:“真真” 逻辑运算的结果为零时:逻辑运算的结果为零时:“假假”表达式的值表达式的值1 结果为结果为“真真”时时0

3、 结果为结果为“假假”时时也只能也只能是是0或或1P58逻辑运算的规则逻辑运算的规则 n&:两个运算量都为非零两个运算量都为非零,结果是真,结果是真,值为值为1;否则,结果是假,值为;否则,结果是假,值为0n|:至少有一个运算量为非零至少有一个运算量为非零,结果是真,结果是真,值为值为1;否则,结果为假,值为;否则,结果为假,值为0n!:运算量为零运算量为零,结果是真,值为,结果是真,值为 1;否;否则,结果为假,值为则,结果为假,值为 0 x=1; printf(%d ,x=0 & x=0 & x=2); printf(%d , x3 );真真真真输出输出1 真真假假

4、输出输出0 真真输出输出1 假假 x=0; printf(%d ,x3); printf(%d ,!x);输出输出0 输出输出1 3.3 if3.3 if语句语句P59返回返回3.3.1 if3.3.1 if语句的一般形式语句的一般形式 1不带不带else的的if语句语句 2带带else的的if语句语句 P601不带不带else的的if语句语句 【例例3.4】老大和老二各拿了一包糖,老大和老二各拿了一包糖,现要保证老大手中的糖比老二的少。现要保证老大手中的糖比老二的少。编写程序实现其功能。编写程序实现其功能。 不带不带else的的if语句形式语句形式if (表达式)(表达式) if子句子句 任

5、意合法任意合法表达式表达式 语法上要求语法上要求一条语句一条语句 #include main( ) int a=0,b=0,t=0; printf(Input a,b:); scanf(%d%d,&a,&b); if(ab) t=a; a=b; b=t; printf(a=%d,b=%dn,a,b); 2 5 注意:缩进格式注意:缩进格式关关键键字字ifa=2,b=55 2 a=2,b=5表达式表达式if子句子句0非非0【例例3.5】编写输出如下分段函数值的程编写输出如下分段函数值的程 序,要求序,要求x的值从键盘输入。的值从键盘输入。 1 (01)y=#include mai

6、n( ) float x=0,y=0; scanf(%f,&x); if( x0 & x1 ) y=x; printf(x=%f,y=%fn, x,y); 第第1次运行次运行: 3 x=3.000000,y=3.000000 if( x1 ) y=x;第第2次运行次运行: -1 x=0.500000,y=1.000000 if( x0 & x=1 ) y=1;x=-1.000000,y=0.000000 必须调试所有可能情况必须调试所有可能情况 【例例3.6】输入输入3个整数,输出其中最大数。个整数,输出其中最大数。 输入输入a、b、c的值的值max=amax=bmax

7、b?真真假假maxc?max=c真真假假输出输出max的值的值#include main( ) int a=0,b=0,c=0,max=0; printf(Input a,b,c:); scanf(%d%d%d,&a,&b,&c); max=a; if ( maxb ) max=b; if ( maxb )temp=b; b=c; c=temp; if ( bc ) 冒冒泡泡 temp=a; a=b; b=temp; if ( ab ) 56冒冒泡泡 冒泡法冒泡法#include main( ) int a=0,b=0,c=0,temp=0; scanf(%d%d%d,

8、&a,&b,&c); if ( ab ) temp=a; a=b; b=temp; if ( bc ) temp=b; b=c; c=temp; if ( ab ) temp=a; a=b; b=temp; printf(After: %d,%d,%dn,a,b,c); printf(Before: %d,%d,%dn,a,b,c);建议加建议加复合语句复合语句 temp=a; a=b; b=temp;讨论题讨论题3.23.2 在本题中将在本题中将3个数改成个数改成4个数,程序应如个数,程序应如何修改?若改成何修改?若改成20(或更多)个数,此(或更多)个数,此方法方便

9、吗?方法方便吗? 课堂练习课堂练习 输入一个不多于输入一个不多于4位的正整数,求该数位的正整数,求该数的位数并输出。的位数并输出。 如:输入如:输入968,输出,输出3。2带带else的的if语句语句【例例3.8】输入一个整数,如果是偶数,输入一个整数,如果是偶数,则输出则输出Even number,如果是奇数,如果是奇数,则输出则输出 Odd number。 #include main( ) int a=0; printf(Input a:n); scanf(%d,&a); if ( a%2=0 ) printf(Even numbern); else printf(Odd numb

10、ern); 第第1次运行次运行 16 输出输出 Even number 第第2次运行次运行 5 输出输出 Odd number 关关键键字字带带else的的if语句形式语句形式if (表达式)(表达式) if子句子句else else子句子句 必须与必须与if配配对使用对使用 语法上都要语法上都要求一条语句求一条语句 语法上都要语法上都要求一条语句求一条语句 执行过程执行过程 非非0表达式表达式if子句子句0else子句子句3.3.2 if3.3.2 if语句的嵌套语句的嵌套P67 int a=0,b=0; a=b=3; if( a5 ) if( a5 ) if( b5 )if( a5 )if

11、( a5 )if( a5 )if子句子句是复合语句是复合语句运行结果运行结果 a=3,b=2 注意注意if和和else的配对的配对【例例3.5】编写输出如下分段函数值的程编写输出如下分段函数值的程 序,要求序,要求x的值从键盘输入。的值从键盘输入。 1 (01)y=【例例3.10】编写求下面分段函数值的程编写求下面分段函数值的程序,其中序,其中x的值从键盘输入的值从键盘输入 。x3+5 (当当0 x10时时)x2+1 (当当20 x30时时)y=0 (当当x0时时)2x2-x-6 (当当10 x20时时)x+3 (当当x30时时)scanf(%f,&x); scanf(%f,&

12、x);if(x0) y=0;else scanf(%f,&x);if(x0) y=0;else if(x10) y=x*x*x+5; else scanf(%f,&x);if(x0) y=0;else if(x10) y=x*x*x+5; else if(x20) y=2*x*x-x-6; else if(x30) y=x*x+1; else y=x+3;printf(x=%f,y=%fn,x,y);被嵌套的被嵌套的if语句语句 3.4 switch3.4 switch语句语句n解决多分支问题解决多分支问题 P69返回返回n输入输入1时时 显示显示An输入输入2时时 显示显示B

13、n输入输入3时时 显示显示Cn输入其他数时输入其他数时 显示显示D scanf(%d,&a);switch ( a ) case 1: printf(”A”); break; case 2: printf(”B”); break; case 3: printf(”C”); break; default: printf(”D”); break; 关关键键字字第一次运行输入第一次运行输入 1 1输出输出 A退出退出switch语句体语句体第二次运行输入第二次运行输入 2 2输出输出 B退出退出switch语句体语句体入口入口入口入口第三次运行输入第三次运行输入 3 3入口入口输出输出 C退

14、出退出switch语句体语句体第四次运行输入第四次运行输入 5 5入口入口输出输出 D退出退出switch语句体语句体switch ( 表达式表达式 ) case 常量表达式常量表达式1: 语句组语句组1 break; case 常量表达式常量表达式2: 语句组语句组2 break; case 常量表达式常量表达式n: 语句组语句组n break; default: 语句组语句组n+1 break; 整型或字符型整型或字符型 值不能相等值不能相等 switch语句常用于处理键盘命令语句常用于处理键盘命令 执行过程(执行过程( 以例以例3.11为例)为例)a=?输入输入a的值的值输出输出A输出输

15、出B输出输出C输出输出D=1=2=3=其他其他【例例3.12】写出下面程序段的运行结果。写出下面程序段的运行结果。 scanf(%d,&a);switch( a ) case 1: printf(”A”); case 2: printf(”B”); case 3: printf(”C”); break; default: printf(”D”); 输入输入 1 输出输出 ABC退出退出switch语句体语句体输入输入 2 输出输出 BC退出退出switch语句体语句体break作用作用【例例3.13】输入一个百分制成绩,输出成输入一个百分制成绩,输出成绩等级绩等级A、B、C、D、E。n

16、90100 An8089 Bn7079 C n6069 D n059 En否则显示出错信息否则显示出错信息 scanf( %d,&score); if ( score100 ) printf(Error!n); else temp=score/10; switch ( temp ) case 10 : case 9 : grade=A; break; case 8 : grade=B; break; case 7 : grade=C; break; case 6 : grade=D; break; default : grade=E; break; printf(%d, %cn,sco

17、re,grade); 89, B 89 85, B 85 100, A 100 可以空可以空分数段转换成整数分数段转换成整数 课堂练习课堂练习 编写一个完成两个数的四则运算程序。编写一个完成两个数的四则运算程序。要求运算结果保留两位小数,用户输入要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。时一次将两个数和操作符输入。如:用户输入如:用户输入34+56,则输出结果,则输出结果90.00。课堂练习课堂练习 某幼儿园收某幼儿园收2岁至岁至6岁的小孩,岁的小孩,2岁和岁和3岁岁小孩进小班(小孩进小班(L class),),4岁小孩进中班岁小孩进中班(M class),),5岁和岁和6

18、岁小孩进大班(岁小孩进大班(H class)。编写程序(用)。编写程序(用switch语句),语句),输入小孩年龄,输出其年龄及进入的班输入小孩年龄,输出其年龄及进入的班号。号。如:输入如:输入3时,输出时,输出age:3,enter L class。课堂练习课堂练习 输入一个字符,若该字符为小写字输入一个字符,若该字符为小写字母,将其转换为对应大写字母;若母,将其转换为对应大写字母;若为数字字符,则转换为对应数字,为数字字符,则转换为对应数字,其他字符按原样输出。其他字符按原样输出。课堂练习课堂练习 编写程序,求下面分段函数的值,编写程序,求下面分段函数的值,要求要求x的值从键盘输入。的值从键盘输入。时)(当时)(当时)(当时)当10101053x502x0(0y2xxxxn【例例】某运输公司的运费按运输距离进行分段计费,设某运输公

温馨提示

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

最新文档

评论

0/150

提交评论