高级语言程序设计-第4章-程序的控制结构2课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《高级语言程序设计-第4章-程序的控制结构2课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计 程序 控制 结构 课件
- 资源描述:
-
1、2023-5-82/532023-5-83/53真真假假假假假真真当当P成立成立直到直到P为假为假2023-5-84/53真真假假假真真假假假假 Testing Condition FirstTesting condition later 2023-5-85/531,2,3,4,4,3,2,12023-5-86/53counter initialValuetest counter valueStep nStep xfalsetrueUpdate counter2023-5-87/53counter initialValuetest counter valueStep nStep xfalset
2、rueUpdate countercounter initialValue2023-5-88/53Can you identify the input and output?Draw a flowchart for the following problem:读入读入5个整数,并显示它们的和个整数,并显示它们的和.Input:5 个整数个整数n1,n2,n3,n4,n5 Output:n1,n2,n3,n4,n5的和的和Input example:2 3 4 5 6Output example:202023-5-89/53Input n1Input n2Input n3input n4inpu
3、t n5output sumsum n1+n2+n3+n4+n5n1Assume input example:2 3 4 5 6n2n3n4n5sumendThis flowchart does not use loop,hence we need to use 6 different variablesstart2023-5-810/53counter 1,sum 0counter6sum sum+nfalsetruecounter+output suminput n1countersum01 6true2n0+2222 6true32+3533 6true45+4944 6true59+5
4、1455 6true614+62066=100Yprint sumendNAny problem?n1002023-5-812/53 当型循环当型循环Condition is tested first 条件或计数控制条件或计数控制Loop is controlled by condition or a counter Syntax Or真假假假执行循环体执行循环体 后面的语句后面的语句2023-5-813/53u特点特点:先判断表达式,后执行循环体(当型):先判断表达式,后执行循环体(当型)u说明说明:循环体有可能循环体有可能一次也不执行一次也不执行下列情况,下列情况,退出退出whilewhi
5、le循环循环:u条件表达式不成立(为零)条件表达式不成立(为零)u循环体内遇循环体内遇break,return,gotobreak,return,goto无限循环无限循环:while(1)while(1)循环体循环体;2023-5-814/53例例 5 5 求求。源程序如下:。源程序如下:=1001nn循环控制变量循环控制变量:在表达式中出:在表达式中出现的变量称为循环控制变量。现的变量称为循环控制变量。必须注意的几个问题:必须注意的几个问题:循环控制变量必须有正确循环控制变量必须有正确的的初值初值;在循环体内应有在循环体内应有改变其值改变其值的语句的语句(););其值的改变应使得其值的改变应
6、使得表达式表达式的值最终趋向于零的值最终趋向于零(循环结束(循环结束条件),否则将形成死循环。条件),否则将形成死循环。main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;2023-5-815/53例例 5 5 求求。源程序如下:。源程序如下:=1001nn注意注意:循环体如果包:循环体如果包含一个以上的语句,含一个以上的语句,应该用花括号括起来应该用花括号括起来,以复合形式出现,以复合形式出现,若不加花括号,则若不加花括号,则whilewhile语句的范围只到语句的范围只到whilewhile 后面的第一个语后面的第一个语句处。句处。main()in
7、t i,sum=0;i=1;while(i=100)sum=sum+i;i+;2023-5-816/53int i,sum;i=1;sum=0;while(i=100)sum+=i;/*循环体缩进书写循环体缩进书写*/i+;/*使循环趋向结束使循环趋向结束*/循环条件:循环条件:循环结构中的条件表达式循环结构中的条件表达式循环体循环体:在每个循环周期均要执行一次在每个循环周期均要执行一次的语句序列。的语句序列。等价的循环体程序:等价的循环体程序:while(i=100)sum+=i+;/*循环体为一条语句循环体为一条语句*/思考题思考题:能否将上述循环体语句可否改为如下形式?:能否将上述循环体
8、语句可否改为如下形式?while(i=100)+i;/*实现累加实现累加*/sum=sum+i;/*循环控制变量循环控制变量i增增1*/=1001iisum2023-5-817/53例例6-3 显示显示110的平方的平方#include main()int i=1;while(i=10)printf(%d*%d=%dn,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=1002023-5-818/53循环体循环体main()int k=0;while(k+3)printf(“%3d”,k
9、);printf(%3d,k);输出结果:输出结果:1 2 3 4循环体循环体说明说明:为什么输出结果不同。注意一个:为什么输出结果不同。注意一个关键问题关键问题:循环条件循环条件判断次数判断次数与循环体被与循环体被执行的次数执行的次数是不同的概是不同的概念,两者可能不相同;前缀、后缀念,两者可能不相同;前缀、后缀+运算的结合性问运算的结合性问题。请分析以上循环提中两个次数的不同。题。请分析以上循环提中两个次数的不同。2023-5-819/53n当型循环当型循环Condition is tested first n计数控制计数控制Loop is controlled by a countern
10、Syntaxes(initial value;condition;update counter)statement;Or(initial value;condition;update counter)statement;statement;循环起始条件循环起始条件循环结束条件循环结束条件循环变量增值循环变量增值复合语句复合语句compound statement被当作一条语句看待被当作一条语句看待循环变量控制循环次数循环变量控制循环次数首先执行首先执行表达式表达式1。如果。如果表达式表达式2的值为的值为非非0,就重复,就重复执行执行语句语句和和表达式表达式3,直到,直到表达式表达式2的值为的值
11、为0时止时止2023-5-820/53此处无此处无;表达式表达式2循环体循环体假假(0)真真(非非0)for表达式表达式1表达式表达式3n表达式表达式1和和表达式表达式3可以没可以没有或者是用逗号分隔的多个有或者是用逗号分隔的多个表达式的组合。但最好不要表达式的组合。但最好不要有太多的表达式组合有太多的表达式组合2023-5-821/53“while”和和“for”语句的相似性语句的相似性#include#include mainmain()()int counter;int counter;counter=1counter=1;while(while(counter=10counter=10
12、)printf(printf(“%dn%dn”,counter);,counter);counter=counter+1counter=counter+1;printf(printf(“*nn”););#include#include main main()()int counterint counter;for for(counter=1counter=1;counter=10counter=10;counter+)counter+)printf(printf(“%dn%dn”,counter),counter);printf(printf(“*nn”);2023-5-822/53for(表
13、达式表达式1;表达式表达式2;表达式表达式3)语句)语句只执行只执行1次次执行执行次数次数赋值表达式、还可赋值表达式、还可以是与循环变量无以是与循环变量无关的其它表达式,关的其它表达式,如逗号表达式如逗号表达式表达表达式可式可以是以是循环变量赋初值循环变量赋初值作用作用同循环体语同循环体语句执行次数句执行次数。(n 次)次)由循环条件确定。由循环条件确定。(设循环体执行(设循环体执行 n次次,则它执行,则它执行n+1次)次)赋值表达式赋值表达式、自增自减、自增自减表达式、及表达式、及其它表达式其它表达式关系表达式、逻辑关系表达式、逻辑表达式、也可以是表达式、也可以是数值和字符表达式数值和字符表
14、达式,只要其值为非零,只要其值为非零,就执行循环体,就执行循环体循环变量增值循环变量增值循环结束条件循环结束条件只执行只执行1次次执行执行次数次数只执行只执行1次次执行执行次数次数赋值表达式、还可赋值表达式、还可以是与循环变量无以是与循环变量无关的其它表达式,关的其它表达式,如逗号表达式如逗号表达式表达表达式可式可以是以是赋值表达式、还可赋值表达式、还可以是与循环变量无以是与循环变量无关的其它表达式,关的其它表达式,如逗号表达式如逗号表达式表达表达式可式可以是以是循环变量赋初值循环变量赋初值作用作用循环变量赋初值循环变量赋初值作用作用2023-5-823/532023-5-824/53i 0,
15、sum 0i 5sumsum+xfalsetruei+output suminput xint x,sum,i;sum=0;for(i=0;i 5;i+)scanf(“%d”,&x);sum=sum+x;printf(“%d”,sum);2023-5-825/53num1_printf(“have come to exitn”);1_212_3123_4123have come to exit_2023-5-826/532023-5-827/53int i,sum;for(i=1,sum=0;i=100;i+)sum+=i;for(i=1,sum=0;i=100;)sum+=i+;for(i=
16、0,sum=0;i+100;)sum+=i;=1001iisum2023-5-828/53求数列求数列 50011n511111611的和。的和。该数列中每一项的分母都有规律该数列中每一项的分母都有规律,后一项为前后一项为前一项加一项加5,分母的通式为,分母的通式为:An=An-1+5,A1=1或:或:),(n511An100210=n#include/*6-6*/main()int i;float sum=0;for(i=0;i=100;i+)sum=sum+1.0/(1+i*5);printf(%f,sum);2023-5-829/53main()int i,n;float fact=1;
17、/*将累乘器将累乘器fact初始化为初始化为1*/printf(“Input n:”);scanf(“%d”,&n);for(i=1;i=n;i+)fact*=i;/*实现累乘实现累乘*/printf(%d!=%0.0fn,n,fact);程序运行情况如下:程序运行情况如下:Input n:5 5!=120可以定义一个函数求任意正整数的阶乘可以定义一个函数求任意正整数的阶乘2023-5-830/53 for for语句的几种特殊格式:语句的几种特殊格式:(1 1)forfor(;)语句;(;)语句;这是一个死循环,一般采用这是一个死循环,一般采用条件表达式条件表达式加加breakbreak语句
18、在循环体内语句在循环体内的适当位置,一旦满足循环条件时,用的适当位置,一旦满足循环条件时,用breakbreak语句跳出语句跳出forfor循环。循环。(2 2)forfor(;表达式(;表达式2 2;表达式;表达式3 3)语句;语句;使用条件是:循环控制变量的初值不是已知常量,而是在循环语使用条件是:循环控制变量的初值不是已知常量,而是在循环语句执行前通过计算得到的,例如:句执行前通过计算得到的,例如:(3 3)forfor(表达式(表达式1 1;表达式;表达式2 2;)语句;)语句;一般当循环控制变量呈非规则性变化,而且在循环体中存在更新一般当循环控制变量呈非规则性变化,而且在循环体中存在
19、更新循环控制变量的语句在使用。例如:循环控制变量的语句在使用。例如:i=m-n;i=m-n;for for(;(;ikik;i+i+)语句;语句;forfor(i=1i=1;i=100 i=100;);)i=i i=i*2+12+1;2023-5-831/53例:例:#include main()int i=0;for(i=0;i10;i+)putchar(a+i);运行结果:运行结果:abcdefghij例:例:#include main()int i=0;for(;i10;i+)putchar(a+i);例例:#include main()int i=0;for(;i10;)putchar
20、(a+(i+);例例:#include main()int i=0;for(;i10;putchar(a+i),i+);省略表达式省略表达式 1省略表达式省略表达式1、3省略循环体省略循环体2023-5-832/531.for1.for语句的三个表达式都是可以省略的,但分号语句的三个表达式都是可以省略的,但分号“;”绝对绝对不能省略不能省略。2.C2.C语言允许在循环体内改变循环变量的值,这在某些程序设计中是语言允许在循环体内改变循环变量的值,这在某些程序设计中是 很有用的。对于很有用的。对于forfor语句要特别注意语句要特别注意省略省略某一表达式形式的运用。某一表达式形式的运用。(4 4)
21、forfor(逗号表达式(逗号表达式1 1;表达式;表达式2 2;逗号表达式;逗号表达式3 3)语句;)语句;在在forfor语句中,表达式语句中,表达式1 1和表达式和表达式3 3都可以是一项或多项。都可以是一项或多项。例如例如 :forfor(i=1i=1,j=1j=1;ijij;i+i+,j+j+)语句;语句;表达式表达式1 1同时为同时为 i i和和 j j 赋初值,表达式赋初值,表达式3 3同时改变同时改变 i i 和和j j 的的值。当有多于一项时,各项用逗号值。当有多于一项时,各项用逗号“,”分隔。分隔。for for语句的几种特殊格式:语句的几种特殊格式:2023-5-833/
22、53main()int i,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);#include/*6-7*/main()char c;for(;(c=getchar()!=n;)printf(%c,c);#include main()int i,c;for(i=0;(c=getchar()!=n;i+=3)printf(%c,i+c);表达式表达式 1、3为为逗号表达式逗号表达式结论:结论:for语句的功能强大。语句的功能强大。2023-5-834/53n直到型循环直到型循环Statements in the loop are
23、executed first(at least once),and condition is tested latern条件或计数控制条件或计数控制 Loop is controlled by condition or a counter nSyntax2023-5-835/53表达式表达式假假真真2023-5-836/53nExample:printf(“Input start and end value:“);scanf(“%d%d”,&start,&end);printf(“%c(%d)n“,start,start);start+;(start=end);_?start?endInput
24、 start and end value:_Input start and end value:65 67_Input start and end value:65 67A(65)_66=67Input start and end value:65 67A(65)B(66)_67=6767Input start and end value:65 67A(65)B(66)C(67)_68=672023-5-837/53真假假假真假假2023-5-838/53例例 while和和dowhile比较比较#include main()int i,sum=0;scanf(%d,&i);do sum+=i
展开阅读全文