高级语言程序设计(c)5流程设计课件

PPT
  • 阅读 33 次
  • 下载 0 次
  • 页数 52 页
  • 大小 977.012 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
高级语言程序设计(c)5流程设计课件
可在后台配置第一页与第二页中间广告代码
高级语言程序设计(c)5流程设计课件
可在后台配置第二页与第三页中间广告代码
高级语言程序设计(c)5流程设计课件
可在后台配置第三页与第四页中间广告代码
高级语言程序设计(c)5流程设计课件
高级语言程序设计(c)5流程设计课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 52
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】高级语言程序设计(c)5流程设计课件.ppt,共(52)页,977.012 KB,由小橙橙上传

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

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

C语言流程设计梁春燕华电信息管理教研室2主要内容◼运算符和表达式(续)◼结构化程序设计◼选择结构程序设计◼循环结构程序设计◼辅助控制语句◼小结◼上机作业4运算符和表达式(续)逻辑运算符与表达式条件运算符与表达式4ab!a!ba&&ba||b真假真假假假真真◼

逻辑运算符种类:!&&||逻辑运算真值表C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,真假假假假假真真假假真真真假真真逻辑运算符和表达式5!(2)&&(11)||(12)高低例a<=x&&x<=ba>b&&x>ya==b||x==y!a||a>b⚫优

先级:⚫结合方向:!:从右向左&&:从左向右||:从左向右//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)逻辑运算符和表达式6例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2

||8<4-!0‘c’&&‘d’值为1值为0值为1值为1值为1值为1//(5>3)&&2||(8<(4-(!0)))值为1逻辑运算符和表达式7短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻

辑运算符才能求出表达式的解时,才执行该运算符例a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例a=1;b=2;c=3;

d=4;m=1;n=1;(m=a>b)&&(n=c>d)//结果m=0,n=1逻辑运算符和表达式8◼一般形式:expr1?expr2:expr3◼执行过程◼功能:相当于条件语句,但不能取代一般if语句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(

“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a

’&&c<=‘z’)?c-’a’+’A’:c条件运算符可嵌套如x>0?1:(x<0?-1:0)优先级:13结合方向:自右向左如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3类型可不同,表达

式值取较高的类型例x?‘a’:‘b’//x=0,表达式值为‘b’;x‡0,表达式值为‘a’x>y?1:1.5//x>y,值为1.0;x<y,值为1.5条件运算符与表达式9运算符的优先级(附录C)◼初等运算符◼单目运算符◼算术运算符◼关系运算符◼逻辑运算符(不含!)◼条件运算符◼赋值运算符◼逗号运

算符结构化程序设计11结构化程序设计◼基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)◼结构化程序:由三种基本结构反复嵌套构成的程序◼优点:结构清晰,易读,提高程序设计质量和效率三种基本结构◼顺序结构ABAB流程图N-S图结构化程序设计12PAB真假PBA真假k

A1A2AiAnk=k2k=k1k=knk=ki......⚫二分支选择结构⚫多分支选择结构13⚫当型循环结构⚫直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1….An可以是一个简单语句,也

可以是一个基本结构循环结构选择结构程序设计15if语句(条件选择语句)◼if语句的三种形式形式一:▪格式:if(expression)statement▪执行过程:exprstatement非0=

0例:if(x>y)printf(“%d”,x);exprstatement1statement2非0=0⚫形式二:◆格式:if(expression)statement1elsestatement2◆执行过程:例:if(x>y)max=x;elsemax=y;选择结构程序设计16◼形式三:格

式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatement]expr1statemnt1非0=0expr2e

xpr3statementstatemnt3statemnt2非0非0=0=0◆执行过程:例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index

=0.2;elseif(salary>400)index=0.1;elseindex=0;17如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);◆i

f后面的表达式类型任意◆语句可以是复合语句◆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=0;elsex+

+;y++;printf(“%d,%d\n”,x,y);}CompileError!说明:18❖一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(

expr3)statement3elsestatement4内嵌if内嵌ifif(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1)if(expr2)statement1elsestatement3内嵌ifi

f(expr1)statement1elseif(expr3)statement3elsestatement4内嵌ifif语句嵌套19#include<stdio.h>main(){intx,y;prin

tf("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<YEn

terintegerx,y:12,6X>YEnterintegerx,y:12,12X==Y例输入两数并判断其大小关系20◼缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…..

.else…...if~else配对原则:21修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if~else正确配对方法:加{}实现if~else正确配对方法例:if(a==b

)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);22❖一般形式:switch(表达式){caseE1:语句组1;break;caseE2:语句组2;break;…….caseEn

:语句组n;break;[default:语句组;break;]}❖执行过程:switch语句(开关分支语句)switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcase23⚫E1,E2,…En是常量表达式,且值必须互不相同⚫语句标号作用,必须用break跳出⚫ca

se后可包含多个可执行语句,且不必加{}⚫switch可嵌套⚫多个case可共用一组执行语句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..说明:24例switch(score){case5:printf(“Very

good!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”

);}运行结果:score为5时,输出:Verygood!Good!Pass!Fail!dataerror!例子25#include<stdio.h>main(){intc;printf("Entermornorhorot

her:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':pri

ntf("\nHello!\n");break;default:printf("\nBye!\n");break;}}例子根据输入字母输出字符串循环结构程序设计27概述C语言可实现循环的语句:用goto和if构成循环while语句do~while语句for语句g

oto语句及用goto构成循环◼goto语句一般格式:goto语句标号;….…..标号:语句;循环结构程序设计28❖功能:无条件转移语句❖说明:⚫标号用标识符表示,不能用整数作标号⚫标号只能出现在go

to所在函数内,且唯一⚫标号只能加在可执行语句前面⚫限制使用goto语句循环结构程序设计29#include<stdio.h>main(){inti,sum=0;i=1;loop:if(i<=100){sum+=i;i++;gotoloop;}printf("%d",sum);

}sum=0+1sum=1+2=3sum=3+3=6sum=6+4=10……sum=4950+100=5050循环终值循环变量增值循环条件循环体例用if和goto语句构成循环循环初值30❖一般形式:while(表达式)循环体语句;❖执行流程:exp

r循环体假(0)真(非0)whilewhile语句31❖特点:先判断表达式,后执行循环体❖说明:⚫循环体有可能一次也不执行⚫循环体可为任意类型语句⚫下列情况,退出while循环◆条件表达式不成立(为零)◆循环体内遇break,return,goto⚫

无限循环:while(1)循环体;While语句特点和说明32用while循环求1-100的和。#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("

%d",sum);}循环初值循环终值循环变量增值循环条件循环体例子33#include<stdio.h>main(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}运行结果:1*1=12*2=43*3=94*4=165*5=256*

6=367*7=498*8=649*9=8110*10=100例显示1~10的平方34❖一般形式:do循环体语句;while(表达式);❖执行流程:do循环体expr假(0)真(非0)whiledo~while语句35❖特点:先执行循环

体,后判断表达式❖说明:⚫至少执行一次循环体⚫do~while可转化成while结构expr循环体假(0)真(非0)循环体While循环do~while语句特点和说明36❖一般形式:for([expr1];[expr2];[expr3])循环体语句;❖执行流程:expr2循环体

假(0)真(非0)forexpr1expr3for语句37for(循环变量赋初值;循环条件;循环变量增值){循环体语句;}❖说明:⚫for语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省

⚫无限循环:for(;;)⚫for语句可以转换成while结构expr1;while(expr2){循环体语句;expr3;}for语句一般应用形式38例:#include<stdio.h>main()

{inti=0;for(i=0;i<10;i++)putchar(‘a’+i);}运行结果:abcdefghij例:#include<stdio.h>main(){inti=0;for(;i<10;i++)putchar(‘a’+i);}例:#in

clude<stdio.h>main(){inti=0;for(;i<10;)putchar(‘a’+(i++));}例:#include<stdio.h>main(){inti=0;for(;i<10;putchar(‘a’+i),i++);}39❖三种循环可互相嵌套,层数不限❖外层循环可包含

两个以上内循环,但不能相互交叉❖嵌套循环的执行流程(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();

…….}(4)for(;;){……do{……}while();……while(){……}…...}内循环外循环内循环❖嵌套循环的跳转禁止:⚫从外层跳入内层⚫跳入同层的另一循环⚫向上跳转循环的嵌套40i<10printf假(0)真(非0)

i=1j++j=1j<10真(非0)假(0)i++for(i=1;i<10;i++)for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);内循环循环的嵌套(图解)外循环辅助控制语句42辅助控制语句◼break语句功能:在循环语句和switch

语句中,终止并跳出循环体或开关体说明:◼break只能终止并跳出最近一层的结构◼break不能用于循环语句和switch语句之外的任何其它语句之中43辅助控制语句(break)expr……break;……假(0)真(非

0)whiledo……break;…...expr假(0)真(非0)while44expr2……break;…...假(0)真(非0)forexpr1expr3switchexpr语句组1break;语句组2break;语句组nbreak;语句组break;…...

const1const2constndefaultcase辅助控制语句(break)45辅助控制语句(break)#include<stdio.h>main(){inti=1;while(i<=10){if(i==5)break;printf("%d*%d=

%d\n",i,i,i*i);i++;}}运行结果:1*1=12*2=43*3=94*4=1646❖功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断❖仅用于循环语句中expr……continu

e;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3continue语句47continue语句#include<std

io.h>main(){inti=1;for(;i<=10;i++){if(i==5)continue;printf("%d*%d=%d\n",i,i,i*i);}}运行结果:1*1=12*2=43*3=94*4=166*6=367*7=498*8=

649*9=8110*10=100小结49小结◼逻辑运算符和表达式;◼条件运算符和表达式;◼结构化程序设计的三种基本结构:顺序、选择、循环;◼选择结构程序设计:if语句、switch语句;◼循环结构程序设计:while语句、do~while语句、for语句;◼辅助控制语句:break语句、con

tinue语句。50上机作业4◼试验目的学会正确使用逻辑运算符和表达式;熟练掌握if语句和switch语句;熟练掌握while语句、do~while语句和for语句;学习调试程序。51上机作业4◼试验内容编写程序,根据输入

的百分制成绩,输出相应的成绩等级A、B、C、D、E(习题5.6):◼要求:分别使用if语句和switch语句来实现;如果输入出错,给出出错信息。猴子吃桃问题(习题6.10):◼题目改为猴子每天吃了前一天剩下的一半后

,再吃两个。END

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