C语言第4章_选择结构课件

PPT
  • 阅读 46 次
  • 下载 0 次
  • 页数 25 页
  • 大小 282.501 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档15.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言第4章_选择结构课件
可在后台配置第一页与第二页中间广告代码
C语言第4章_选择结构课件
可在后台配置第二页与第三页中间广告代码
C语言第4章_选择结构课件
可在后台配置第三页与第四页中间广告代码
C语言第4章_选择结构课件
C语言第4章_选择结构课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 25
  • 收藏
  • 违规举报
  • © 版权认领
下载文档15.00 元 加入VIP免费下载
文本内容

【文档说明】C语言第4章_选择结构课件.ppt,共(25)页,282.501 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44553.html

以下为本文档部分文字说明:

第三部分C语言的结构语句第4章选择结构问题的提出:百分制成绩的等级划分问题编程实现:给出一百分制成绩,要求输出成绩等级‘A‟、‘B‟、‘C‟、‘D‟、‘E‟。90分以上为‘A‟等,89~80分为‘B‟等,79~70分为‘C‟等,69~60分为‘D‟等,60分以下为‘E‟等。假

定成绩为整型数据。这显然是一个必须用选择语句才能解决的问题。本章将围绕此问题不断地尝试不同的解法。§4.1if语句(条件选择语句)if语句的三种形式形式一:单分支格式:if(expression)statement执行过程:exprstatemen

t非0=0例:if(x>y)printf(“%d”,x);exprstatement1statement2非0=0形式二:双分支格式:if(expression)statement1elsestatement2执行过程:例:if(x>y)max=x;elsem

ax=y;形式三:多分支格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2

expr3statemntnstatemnt3statemnt2非0非0=0=0执行过程:例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salar

y>400)index=0.1;elseindex=0;如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(„a‟)printf(“%d”,‟a‟);说明:if后面的表达式类型任意(关键:非0为真)语句可以

是复合语句if(x)if(x!=0)if(!x)if(x==0)例考虑下面程序的输出结果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%

d,%d\n”,x,y);}CompileError!if后只能管一条语句/*ch4_1.c*/#include<stdio.h>main(){intx,y;printf("Enteraninteger:");scanf("%d",&x);y=x;if(y<0)y=-y;pr

intf("\ninteger:%d--->absolutevalue:%d\n",x,y);}例求一个数的绝对值运行:Enteraninteger:-12integer:-12--->absolutevalue:12/*ch4_2.c*/#include<

stdio.h>main(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b

);if(a==b)printf("a==b\n");elseprintf("a!=b\n");}例输入两个数并判断两数相等否运行:Enterintegera:12Enterintegerb:12a==b运

行:Enterintegera:12Enterintegerb:9a!=bmain(){intscore;scanf("%d",&score);if(score<60)printf(“grade=E”);if(score

>=60&&score<70)printf(“grade=D”);if(score>=70&&score<80)printf(“grade=C”);if(score>=80&&score<90)printf(“grade=B”);if(score>=90)printf(“

grade=A”);}【例】百分制成绩的等级划分问题之解法1:仅用if单分支语句实现if语句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elsei

f(expr3)statement3elsestatement4内嵌if内嵌ifif(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1)if(expr

2)statement1elsestatement3内嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4内嵌if例输入两数并判断其大小关系/*ch4_4.c*

/#include<stdio.h>main(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y)printf

("X>Y\n");elseprintf("X<Y\n");elseprintf("X==Y\n");}运行:Enterintegerx,y:12,23X<YEnterintegerx,y:12,6X>YEnterintegerx,y:12,12X

==Yif~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修

改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if~else正确配对方法:加{}例考虑下面程序输出结果:main(){intx=100,a=

10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}结果:-1注意条件表达式之间的顺

序关系【例】百分制成绩的等级划分问题之解法2:if嵌套方法main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);if(grade>=90)

printf("A\n");elseif(grade>=80)printf("B\n");elseif(grade>=70)printf("C\n");elseif(grade>=60)printf("D\n");elseprintf("E\

n");}§4.2switch语句(开关分支语句)一般形式:switch(表达式){caseE1:语句组1;break;caseE2:语句组2;break;…….caseEn:语句组n;break;[default:语句组;break;]}执行过程:switch表达式

语句组1语句组2语句组n语句组…...E1E2Endefaultcase说明:E1,E2,…En是常量(整型/字符型)表达式,且值必须互不相同,不能表示范围,如x>0语句标号作用,必须用break

跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句如:……case„A‟:case„B‟:case„C‟:printf(“score>60\n”);break;……..例switch(sco

re){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}运行结果

:score为5时,输出:Verygood!Good!Pass!Fail!dataerror!如果score分别为3,2,1呢?voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){

case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1【例】根据程序写出运行结果/*ch4

_5.c*/#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoo

dmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}例根据输入

字母输出字符串main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);switch(grade/10){case10:case9:printf("

A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n");break;default:printf(

"E\n");break;}}【例】百分制成绩的等级划分问题之解法3:【例】从键盘输入三个整数a、b、c,输出最大的一个。main(){inta,b,c,max;printf("inputa,b,c:");scanf("

%d,%d,%d",&a,&b,&c);if(a>b)if(a>c)max=a;elsemax=c;elseif(b>c)max=b;elsemax=c;printf("themaxis:%d\n",max);}【例】根据程序写出运行结果答案:2答案:13main

(){intx=2,y=-1,z=2;if(x<y)if(y<0)z=0;elsez+=1;printf(“%d\n“,z);}main(){inti=10;switch(i){case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1

;}printf("%d\n",i);}【例】根据输入的年份和月份,计算该月有多少天?(考虑闰年和平年的情况)main(){intyear,month,day;printf(“inputtheyearandmonth:”);scanf(“%d,%d”,&year,&month);swit

ch(month){case4:case6:case9:case11:day=30;break;case2:if(year%4==0&&year%100!=0||year%400==0)day=29;elseday=28;break;

default:day=31;break;}printf(“Themonthis%dday\n”,day);}【例】判断一个输入的3位数是否为水仙花数main(){inta,a1,a2,a3;printf("请输入一个3位数的整数:");scanf("%d",&

a);a1=a%10;a2=a/10%10;a3=a/100%10;if(a1*a1*a1+a2*a2*a2+a3*a3*a3==a)printf("%d是水仙花数!",a);elseprintf("%d不是水仙花数!",a);}4.4本章小结§本章

主要介绍了if语句和switch语句这两中分支语句。§if语句包括了三种类型:单分支if语句、双分支if语句和多分支if语句(即if语句的嵌套),if后可以是范围条件,特别注意在if语句的嵌套中if和else的匹配关系;§switch语句(按整型、配标号、添break、可跳出)主要用于

对单条件进行测试,从其多种结果中取一种的情形,要注意在其case分支语句中使用间断语句break语句。在实际运用中,应根据具体的情况灵活使用这两种语句来解决问题。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?