【文档说明】C程序设计第4章选择结构程序设计.ppt,共(34)页,219.012 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2193.html
以下为本文档部分文字说明:
1高级语言程序设计南京邮电大学传媒技术学院第4章选择结构程序设计2高级语言程序设计南京邮电大学传媒技术学院单分支:if(表达式){语句;}其他语句;双分支:if(表达式){语句1;}else{语句2;}其他语句;多分支:if(表达式1){语句1;}elseif(表达式
2){语句2;}……elseif(表达式n){语句n;}else{语句n+1;}3高级语言程序设计南京邮电大学传媒技术学院4.1引言输出两个数中的较大值?#include<stdio.h>intmain(){inta,b;scanf(“%d%d”,&a,&b);printf(“%d”,xxx)
;return0;}4高级语言程序设计南京邮电大学传媒技术学院4.2关系运算符和关系表达式1、关系运算符<、<=、>、>=、==、!=2、关系表达式用关系运算符连接起来的式子。5>3、5>=3、5<3、5<=3、5==3、5!=33、关系表达式的值关系成立:真、非
0关系不成立:假、05高级语言程序设计南京邮电大学传媒技术学院4.3逻辑运算符与逻辑表达式1、逻辑运算符:&&、||、!4、运算规则:!:原值取反!0→1!1→0&&:两个操作数均为真,结果为真;否则为假||:两个操作数均为假,结果为假;
否则为真2、逻辑表达式:用逻辑运算符连接起来的式子3、逻辑表达式的值:真(非0)、假(0);例:inta=5;floatb=3.5;!a→0!b→0a&&b→1a||b→1!a&&b→0!a||b→16高级语言程序设计南京
邮电大学传媒技术学院4、注意编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,并不是所有的逻辑运算符都被执行,只有在需要执行下一个逻辑运算才能求出表达式的解时,才继续运算。7高级语言程序设计南京邮电
大学传媒技术学院非完全求解举例如果已有定义:intx=1,y=1,z=1;对如下的逻辑表达式:(x=0)&&(y=2)&&(z=3),表达式的结果是0,x的值被赋值为0,y,z的值保持不变。(x=5)&&(y=0)&&(z=3),表达式的结果是0,x,
y的值赋值为5和0,z的值保持不变。(x=5)||(y=2)||(z=3),表达式的结果是1,x的值被赋值为5,y,z的值保持不变。(!x)||(y=0)||(z=3),表达式的结果是1,x,y,z的值为1,0,3。8高
级语言程序设计南京邮电大学传媒技术学院4.4条件语句语句形式:if(表达式){语句;}其他语句;执行流程:4.4.1条件语句的三种形式1、单分支条件选择if语句9高级语言程序设计南京邮电大学传媒技术学院语句形式:if(表达式){语句1;}else{语句2;}其他语句;执行
流程:2、双分支条件选择if语句所以,可以借助表达式表示某种条件;表达式非零,表示条件成立,执行某些动作;表达式为零,表示条件不成立,不动作或执行另外的动作;10高级语言程序设计南京邮电大学传媒技术学
院……inta,b;scanf(“%d%d”,&a,&b);if(a>b)printf(“Thebiggerisa=%d\n”,a);elseprintf(“Thebiggerisb=%d\n”,b);……常用“>”表示“a大于b”这样的条件:条件成立时,a>b为非零,执行受if控
制的语句;条件不成立时,a>b为零,执行受else控制的语句;11高级语言程序设计南京邮电大学传媒技术学院……inta,b;scanf(“%d%d”,&a,&b);if(a<b)printf(“Thebiggerisb=%d\n”,a);elseprintf(“Thebiggerisa=%d
\n”,a);……常用“<”表示“a小于于b”这样的条件:条件成立时,a<b为非零,执行受if控制的语句;条件不成立时,a<b为零,执行受else控制的语句;12高级语言程序设计南京邮电大学传媒技术学院>>=<<=!=等关
系运算符常用来表示大小关系的条件;原则:条件成立,表达式的值为非零;条件不成立,表达式的值为零……inta,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>b){if(a>c)printf(“Thebiggestisa=%d\n”,a);elseprintf(“Thebi
ggestisc=%d\n”,c);}else{if(b>c)printf(“Thebiggestisb=%d\n”,b);elseprintf(“Thebiggestisc=%d\n”,c);}……if语句的嵌套13高级语言程序设计
南京邮电大学传媒技术学院3、多分支选择if语句语句形式:if(表达式1)语句1;elseif(表达式2)语句2;……elseif(表达式n)语句n;else语句n+1;if-else匹配原则:就近匹配14高级语言程序设计南京邮电大学传媒技术学院例:计算分段函数。
x5x1y2x1x103x10x10+=−#include<stdio.h>voidmain(){floatx,y;printf("enterx:");scanf("%f",&x);else{if(x<=1)y=x+5;else
if(x<10)y=2*x;elsey=3/(x-10);printf("x=%.2f,y=%.2f\n",x,y);}if(x==10)printf("notdefinex.\n");}15高级语言程序设计南京邮电大学传媒
技术学院当多个条件必须同时成立时,才能做某些事情,要借助于“&&”运算符来组合各条件成为一个大条件。……inta,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>b&&a>c)printf(“Thebiggestisa=%d\n”,a);
if(b>a&&b>c)printf(“Thebiggestisb=%d\n”,b);if(c>a&&c>b)printf(“Thebiggestisc=%d\n”,c);……16高级语言程序设计南京邮电大学传媒技术学院当多个条件之一成立,即可做某些事情,要借助于“||”运算
符来组合各条件成为一个大条件。……inttime;scanf(“%d”,&time);if(time>=100||time==-1)printf(“you完蛋了!”);elseprintf(“you还有希望,
努力改造!”);……17高级语言程序设计南京邮电大学传媒技术学院&&||!等逻辑运算符常用来表示由多个条件组合而成的大条件;原则:大条件成立,逻辑表达式的值为非零;大条件不成立,逻辑表达式的值为零;(判断闰年)18高级语言程序设计南京邮电大学传媒技术学院【例4-3】从键盘输入一个字符,判别它的
类别由ASCII码表可知:ASCII值小于32的为控制字符ASCII值在‘0’和‘9’之间的为数字ASCII值在‘A’和‘Z’之间为大写字母ASCII值在‘a’和‘z’之间为小写字母其余则为其它字符19高级语言程序设计南京邮电大学传媒技术学院程序:#inc
lude<stdio.h>voidmain(){charc;printf("Inputacharacter:");c=getchar();if(c<32)printf("Thisisacontrolcharac
ter\n");elseif(c>='0'&&c<='9')printf("Thisisadigit\n");elseif(c>='A'&&c<='Z')printf("Thisisacapitalletter\n");elseif(c>='a'&&c<=
'z')printf("Thisisasmallletter\n");elseprintf("Thisisanothercharacter\n");}20高级语言程序设计南京邮电大学传媒技术学院【例4-4】比较两个数的大小关系,有三种结果:大于、小于和等于,采用if语句的嵌套结构来完成。#inc
lude<stdio.h>voidmain(){inta,b;printf("pleaseinputa,b:");scanf("%d%d",&a,&b);if(a!=b)if(a>b)printf("a>b\n");elsep
rintf("a<b\n");elseprintf("a=b\n");}21高级语言程序设计南京邮电大学传媒技术学院4.5多分支选择语句语句一般形式:switch(表达式){case常量1:语句1;case常量2:语句2;case常量3:语句3;
.......case常量n:语句n;default:语句n+1;}根据表达式的不同值,选择不同的程序分支,又称开关语句。整型或字符型常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。千万不能接(;)号
执行过程?22高级语言程序设计南京邮电大学传媒技术学院【例4-6】输入一个数字,输出对应的星期几的英文单词。#include<stdio.h>voidmain(){inta;printf("inputintegernumber:");scanf("%d",&a);switch
(a){case1:printf("Monday\n");case2:printf("Tuesday\n");case3:printf("Wednesday\n");case4:printf("Thursday\n");case5
:printf("Friday\n");case6:printf("Saturday\n");case7:printf("Sunday\n");default:printf("error\n");}}程序运行结果:inputintegernumber:5↙FridaySat
urdaySundayerror23高级语言程序设计南京邮电大学传媒技术学院4.5.2break语句在多分支选择结构中的应用breakcase语句后加上break语句;每当执行到break语句时,立即跳出switch语句体。24高级语言程序设计南京邮电大学传
媒技术学院将上面的例4-6修改如下:#include"stdio.h"voidmain(){inta;printf("inputintegernumber:");scanf("%d",&a);switch(a){cas
e1:printf("Monday\n");break;case2:printf("Tuesday\n");break;case3:printf("Wednesday\n");break;case4:printf("Thursday\n
");break;case5:printf("Friday\n");break;case6:printf("Saturday\n");break;case7:printf("Sunday\n");break;default:printf("Err
or\n");}}程序运行结果:5↙Friday25高级语言程序设计南京邮电大学传媒技术学院【例4-7】学生分数成绩转换为相应的等级成绩s/10s转为等级As转为等级Ds转为等级Bs转为等级Es转为等级C开
始结束10其他6789输出转换为等级的成绩s输入分数成绩s程序流程图:26高级语言程序设计南京邮电大学传媒技术学院程序源代码及运行结果#include<stdio.h>voidmain(){ints;printf("Inputascore:");scanf("%d",&s);//s中存放
学生的成绩printf("Yourscore:%d",s);switch(s/10)//巧妙利用整除,把一个区间段范围的值对应到一个数据上{case10:case9:s='A';break;case8:s='B';break;case7:s='C';break;case6:s=
'D';break;default:s='E';}printf("%c\n",s);}程序运行结果:Inputascore:65↙Yourscore:65D1、多个case语句可以共用一组执行语句。2、各case子
句的先后顺序可以变动,而不会影响程序执行结果。27高级语言程序设计南京邮电大学传媒技术学院4.6应用举例【例4-8】输入三个整数,输出最大数和最小数。算法分析:⚫首先比较a,b的大小,把大数装入max,小数装入min中⚫接下来m
ax和min再与c比较,若max小于c,则把c赋予max;如果c小于min,则把c赋予min,因此max内总是最大数,而min内总是最小数。⚫最后输出max和min的值即可。28高级语言程序设计南京邮电大学传媒技术学院程序源代码及运行结果#include<stdio.
h>voidmain(){inta,b,c,max,min;printf("inputthreenumbers:");scanf("%d%d%d",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(max<c)max=c;el
seif(min>c)min=c;printf("max=%d\nmin=%d",max,min);}程序运行结果:inputthreenumbers:345↙max=5min=329高级语言程序设计南京邮电大学传媒技术学院例:企业发放的奖金根据利润提成。从键
盘输入当月利润,求应发放奖金总数?30高级语言程序设计南京邮电大学传媒技术学院利润xx<=1010<x≤2020<x≤4040<x≤6060<x≤100100<x(int)x/10常量0,11,22,3,44,5,66,7,8,9,1010以上用这种方法转换后,n
出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。31高级语言程序设计南京邮电大学传媒技术学院#
include"stdio.h"voidmain(){floatx,y;intn;scanf("%f",&x);n=(int)x/10;if((int)x/10==x/10)n--;switch(n){case0:y=x*0.1;break;case1:y=x*0.12;b
reak;case2:case3:y=x*0.14;break;case4:case5:y=x*0.16;break;case6:case7:case8:case9:y=x*0.18;break;default:y=x*0.2;}print
f("y=%.2f\n",y);}源程序:32高级语言程序设计南京邮电大学传媒技术学院【例4-11】任意输入三个数,代表三角形的三条边长,判断能否构成三角形#include<stdio.h>voidmain(){floa
ta,b,c;scanf("%f,%f,%f",&a,&b,&c);if((a+b)>c&&(a+c>b)&&(b+c>a)){if((a==b)&&(b==c))printf("equalateraltriangle.\n");elseif((a==b)||(a=
=c)||(b==c))printf("isoscelestriangle.\n");elseprintf("othertriangle.\n");}elseprintf("cannot\n");}程序运行结果:5,5,5↙equalateralt
riangle33高级语言程序设计南京邮电大学传媒技术学院小结⚫关系运算符、逻辑运算符、关系表达式。⚫这些表达式常作为条件选择语句的判断条件。⚫C语言的条件选择语句有两种:if语句和switch语句⚫if语句有三种形式:⚫单分支选择if语句⚫双分支选择if语句⚫
多分支选择if语句⚫switch语句联合break语句构成了一种多分支选择结构,并且形式上比用if语句的嵌套清晰易读。34高级语言程序设计南京邮电大学传媒技术学院第一次P52:4.1、4.4、4.8第二次P52:4.6、4.10作业