版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序流程控制1第1页,课件共26页,创作于2023年2月4.1算法数据结构+算法=程序数据结构+算法+程序设计方法+语言环境=程序4.1.1算法的概念算法的五个特性:有穷性、确定性、可行性、输入、输出。算法设计注意:正确性、可读性、健壮性、高效性。2第2页,课件共26页,创作于2023年2月4.1.2算法的组成要素1、操作:
包括算术运算、逻辑运算、关系运算、函数运算、位运算、I/O操作等。2、控制结构:
控制算法中各个操作的执行顺序。三种基本控制结构是:
顺序结构(顺序执行)选择结构(比较判断)循环结构或称重复结构(反复执行)3第3页,课件共26页,创作于2023年2月4.1.3算法的描述自然语言流程图N-S图PAD图伪代码语句2语句1语句1语句2判断YN语句4第4页,课件共26页,创作于2023年2月3.复合语句一般形式:{[内部数据说明部分;]
执行语句部分;
}2.表达式语句运算符表达式语句:计算表达式的值。函数调用表达式语句:调用函数。4.2C语言的基本语句声明语句用于声明合法标识符(变量名或函数名),可在函数体或复合语句中使用,且须写在其他语句前面。例:x=(a+3)*b;a=sin(x);y=x++;例如:inta,b;doublex,y,z;5第5页,课件共26页,创作于2023年2月空语句只有分号组成的语句,什么也不执行。流程控制语句条件判断语句if语句、switch语句。循环执行语句do…while语句、while语句、for语句。流程转向语句break语句、goto语句、continue、语句return语句。如:main(){inta=1,b=4;…..{intb;b=3;printf(“%d\n”,a+b);}printf(“%d”,a+b);}
输出:45说明:
}后不加分号。语法上和单一语句相同。复合语句可嵌套。复合语句中的变量只在本部分有效。6第6页,课件共26页,创作于2023年2月4.3顺序结构顺序结构程序由简单语句组成,程序流程如图3.1所示,语句按书写顺序执行,先执行A,再执行B。BA顺序结构执行流程例:main(){inta,b=4;a=b*2;printf(“%d”,a);}7第7页,课件共26页,创作于2023年2月4.4选择结构4.4.1if…else语句结构形式:if(表达式)
语句1;
else
语句2;执行过程:先判断表达式,成立就执行语句1,否则执行语句2。例:if(x>y)max=x;elsemax=y;注意:
if…else中表达式可为关系表达式、逻辑表达式、数值表达式。
if…else中语句1、语句2可以为简单语句或复合语句。
if…else中分号的使用位置。表达式语句1真假语句2双分支选择8第8页,课件共26页,创作于2023年2月4.4.2if语句结构形式:if(表达式)
语句;执行过程:先判断表达式,若成立则执行语句,否则跳过该语句而直接执行该结构后的下一条语句。注意:此处,不管分支语句是否执行,if后的表达式一定执行。表达式语句真假单分支选择例:main(){inta=1,b=3,max;max=a;
if(a<b)max=b;printf(“%d”,max);}9第9页,课件共26页,创作于2023年2月4.4.3elseif语句一般形式:if(表达式1)语句1;
elseif(表达式2)语句2;
…elseif(表达式n)语句n;
else语句n+1;执行过程:执行时先判断表达式1的值,非0就执行下面的语句,若为0就执行下一个判断,一直这样做下去直到得出最后结果。
表达式1真语句1假表达式2表达式3语句4语句3语句2真真假假多分支选择例:if(score>=90)grade=‘A’;elseif(score>=80)grade=‘B’;elseif(score>=70)grade=‘C’;elseif(score>=60)grade=‘D’;elsegrade=‘E’;10第10页,课件共26页,创作于2023年2月4.4.4if语句的嵌套当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。一般形式:if(表达式1)if(表达式1_2)
语句1_1else
语句1_2elseif(表达式2_1)
语句2_1else
语句2_2注意:当程序中存在嵌套的if….else结构时,每个else都与其前面最近的if配对,由内层向外层逐步处理。11第11页,课件共26页,创作于2023年2月if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4内嵌if内嵌ifif(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1){if(expr2)statement1}elsestatement3
内嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4内嵌if例如:12第12页,课件共26页,创作于2023年2月if(z>y)if(z>x)max=z;elseif(y>x)max=y;if(z>y){if(z>x)max=z;}else{if(y>x)max=y;}
二者有何区别?13第13页,课件共26页,创作于2023年2月4.4.5switch语句结构一般形式:执行过程:switch(表达式){caseE1:语句组1;caseE2:语句组2;…….caseEn:语句组n;[default:语句组;]}switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcase
例:switch(i)
{case1:printf(“A\n”);break;
case2:printf(“B\n”);break;
case3:printf(“C\n”);break;case4:printf(“D\n”);break;
default:printf(“E\n”);
}14第14页,课件共26页,创作于2023年2月4.5循环结构循环控制:记数法和标志法。4.5.1穷举与迭代算法穷举问题所涉及的情况。答案需要满足的条件。迭代确定迭代变量。建立迭代关系式。对迭代工程进行控制。15第15页,课件共26页,创作于2023年2月4.5.2while语句一般格式:while(循环条件表达式)循环体语句;执行过程:先计算循环条件表达式的值,若为真则执行循环体语句,重复上述过程,直到循环条件表达式的值为假时,循环结束。注意:先判断,后执行。循环条件表达式只要其值非0,就可以执行循环体。循环体由多个语句组成时,须用花括号形成复合语句。为使循环最终能结束,每执行一次循环体,循环条件表达式的值应趋于0变化。如果表达式的值一开始就为0,则语句一次也会被不执行。#include“stdio.h”main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}16第16页,课件共26页,创作于2023年2月4.5.3do…while语句一般格式:do{
循环体语句;
}while(循环条件表达式);执行流程:先执行循环体语句,然后对循环条件表达式进行计算,若其值为真则重复上述过程,直到循环条件表达式的值为假时,循环结束。注意:如果表达式的值一开始就为0,也会执行一次语句,此处异于while语句。循环控制变量值在循环体内必须有所改变。#include“stdio.h”main(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}17第17页,课件共26页,创作于2023年2月4.5.4for语句一般形式:for([表达式1];[表达式2];[表达式3])
循环体语句;其中:表达式1常用于给循环变量赋初值,可选。表达式2是循环条件,可选。表达式3常用来修改循环变量的值,可选。expr2循环体假(0)真(非0)forexpr1expr3说明:
for语句中三个表达式的类型任意,自身都可省略,但
分号不可省。无限循环:for(;;)for语句可以转换成while结构。表达式1;while(表达式2){
循环体语句; 表达式3;}#include“stdio.h”main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}18第18页,课件共26页,创作于2023年2月例:main(){inti,sum=0;
for(i=1;i<=100;i++)sum+=i;printf(“%d”,sum);}例:main(){inti=1,sum=0;
for(;i<=100;i++)sum+=i;printf(“%d”,sum);}例:main(){inti=1,sum=0;
for(;i<=100;sum+=i++);printf(“%d”,sum);}19第19页,课件共26页,创作于2023年2月4.5.5流程转向语句功能:改变程序的结构,使程序从其所在的位置转向另一处。1.break语句语句形式:break;作用:在switch分支结构中,可以使流程跳出switch分支结构;在循环结构中,使流程跳出当前的循环层,转向执行该循环结构后面的语句。说明:break只能终止并跳出最近一层的结构。break不能用于循环语句和switch语句之外的任何其它语句
之中。20第20页,课件共26页,创作于2023年2月例:main()
{
inti=1,sum=0:
for(;;)
{sum+=i;i++;
if(i>100)break;/*如果i>100,则退出循环*/
}
printf(“sum=%d”,sum);
}
本程序中,当i>100时,强行终止for循环,继续执行for语句下一条语句。21第21页,课件共26页,创作于2023年2月2.continue语句语句形式:continue;作用:使本次循环提前结束,即跳过循环体中尚未执行的循环体语句,但不结束整个循环,而继续进行下一次循环的条件判别以决定是否进入下一次循环。说明:仅用于循环语句中。3.函数的调用和返回作用:使程序流程转向被调用函数,而函数返回语句return的功能是使流程从被调用函数返回主调函数。22第22页,课件共26页,创作于2023年2月例:显示输入的字符,如果按的是Esc键,则退出循环;如果按的是Enter键,则不做任何处理,继续输入下一个字符。#include<stdio.h>main(){charch;
for(;;){ch=getchar();/*字符输入函数*/if(ch==27)/*Esc键的ACSII码为27*/
break;/*退出循环*/if(ch==13)
continue;/*按的是Enter键,跳过字符输出语句*/putchar(ch);/*显示输入的字符*/}getchar();/*让程序停一下,拍任意键继续*/}23第23页,课件共26页,创作于2023年2月4.goto语句goto语句被称为无条件转移语句,由两部分组成:
goto标号;和标号:语句其中:标号必须是一个合法的标识符,把它放在一个语句前面,后跟一个冒号,表示程序流程将转向此语句。注意:goto语句和break语句相比最大的好处是可以一下跳出多重循环,但不能从外面跳入循环体内。goto语句应有限制地进行使用。main(){intsum=0,n=1;loop:if(n<=100){sum+=n;n++;gotoloop;}printf(“%d\n”,sum);}24第24页,课件共26页,创作于2023年2月4.5.6循环结构的嵌套循环的嵌套:在循环体语句中又有另一个完整的循环结构的形式。内循环:嵌套在循环体内的循环语句。外循环:外面的循环语句。多层循环:内循环体中又有嵌套的循环语句。注意:内循环必须被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江大学高等代数期末试卷|2022考研(权威解析版)
- 2023考研数学二期末试卷|附解析版
- 四川省南充市营山县城区片区学校2026-2027学年六年级数学第一学期期末统考试题含解析
- 2026年中职计算机应用(程序设计基础)试题及答案
- 木结构考试题及答案
- 统计指数考试题及答案
- 机电保护考试题及答案大全
- 速成电工考试题及答案
- 会计初级考试题及答案2025
- 2026年大学素描(静物写生与造型基础)试题及答案
- 国有六大行《EPI(行测)》考试1000题
- 输电线路冻土地区施工技术方案
- 看守所保密安全管理制度
- 2026人教版四年级数学上册第一单元第9课《求近似数》课件
- 幼儿园食堂管理工作领导小组及岗位职责
- 产时电子胎心监护判读和管理:2025年美国妇产科医师学会临床实践指南解读
- 学校总务处管理制度汇编
- 2025-2026学年浙教版(新教材)初中科学八年级第二学期教学计划附进度表
- (完整版)钢箱梁工程监理实施细则
- 安全联锁保护系统管理制度
- 幼儿园大班语言《泡泡变成包》课件
评论
0/150
提交评论