北京大学计算概论(C语言)经典课件Lecture 8――循环结构

上传人:我*** 文档编号:142773453 上传时间:2020-08-23 格式:PPT 页数:35 大小:571KB
返回 下载 相关 举报
北京大学计算概论(C语言)经典课件Lecture 8――循环结构_第1页
第1页 / 共35页
北京大学计算概论(C语言)经典课件Lecture 8――循环结构_第2页
第2页 / 共35页
北京大学计算概论(C语言)经典课件Lecture 8――循环结构_第3页
第3页 / 共35页
北京大学计算概论(C语言)经典课件Lecture 8――循环结构_第4页
第4页 / 共35页
北京大学计算概论(C语言)经典课件Lecture 8――循环结构_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《北京大学计算概论(C语言)经典课件Lecture 8――循环结构》由会员分享,可在线阅读,更多相关《北京大学计算概论(C语言)经典课件Lecture 8――循环结构(35页珍藏版)》请在金锄头文库上搜索。

1、计算概论(Introduction to Computing),主讲人:马思伟 北京大学数字媒体研究所 ,第八讲 程序结构-循环结构,复习:分支控制if-else,两种形式 if (表达式)语句;/语句组; if (表达式)语句;/语句组; else 语句;/语句组2; 例 if (i0) y=x/i; else x=i; y=-x; ,分支控制if-else,嵌套if-else, 最近邻原则-else与最近的if语句共同构成一句 if (i0) if (ji) x=j; else x=i; 区别 if (i0) if (ji) x=j; else x=i;,多分支语句switch-case/

2、default,表达式expression的值类型必须是整型或字符型:char, short, int, long case子句中的值valueI也必须是整型或字符型常量,而且所有case子句中的值应是不同的 可以有任意数目的case条件,但不能有两个完全相同的case表达式,多分支语句switch-case/default,例 switch (c) case A: capa+; case a: lettera+; default: total+; ,例 switch (i) case -1: n+; break; case 0: z+; break; case 1: p+; break; ,

3、例 case a: case b: case c: case d: case e: case f: x+; 另: if (c=a) | (c=f”) ) x+;,循环语句,很多实际问题中会遇到具有规律性的重复运算,因此,在程序中就需要将某些语句重复执行。 比如,求1到N的和,如果没有循环,我们该如何编程?1 2 3 N ? 1: intN=10, i, S = 0; 2: i = 1; 3:if( i=N ) 4: S = S + i; 5: i = i + 1; 6: 回到3,循环语句,循环控制语句包括: 循环语句:for 当型循环语句:while 直到型循环语句:do-while,循环语句

4、for,循环语句for(另一种当型循环) for(初始条件表达式;循环控制表达式;循环操作表达式) 语句/语句组 一次for循环执行过程 首先执行初始条件表达式(第一次):可以为空 循环控制表达式:一定是一个数值表达式,也可以为空 如果表达式值为真,条件成立,执行循环体一次 如果表达式值为假,条件不成立,退出循环 如果省略,默认值为真,直到遇到break, return语句退出循环 循环操作表达式:也可为空,循环语句for,例,计算从0到100的整数中有多少个数是偶数(包括),奇数中有多少数是的倍数 #include int main() int i, n2=0, n3=0; for(i=0;

5、 i=100; i+) if (i%2=0) n2+; else if (i%3=0) n3+; printf(“n2=%d, n3=%dn”, n2, n3); return 0; ,循环语句for,循环语句while,循环语句while(当型循环) while(表达式)语句/语句组 表达式必须是数值表达式 一次循环 计算表达式的值 如果表达式值为真,执行循环体,为假退出 循环,循环语句while,计算从1到100的所有整数的平方和 #include int main() int i=100; int sum=0; while(i0) sum = sum+i*i; i-; printf(“s

6、um=%dn”, sum); return 0; ,循环语句while,循环语句do-while,循环语句do-while(直到型循环) do 语句/语句组 while(表达式); 一次循环 执行一次循环体 计算表达式,条件成立再执行一次循环体,否则退出循环,循环语句do-while,计算从1到100的所有整数的平方和 #include int main() int i=100; int sum=0; do sum = sum+i*i; i-; while (i0); printf(“sum=%dn”, sum); return 0; ,循环语句do-while,课堂练习,以下的 for 循环

7、( )。 for(x=0,y=0;(y!=123) a的值是( )。 A. 5B. 0C. 1D. -2 答案 B, C,程序转移语句,程序转移相关语句包括: break continue,程序转移语句break,在switch语中,break语句用来终止switch语句的执行,使程序从整个switch语句后的第一条语句开始执行 在循环语句中(while, do-while, for),break用于终止并跳出循环,从紧跟着循环体代码段后的语句执行。break语句的格式为: break;,程序转移语句break,break退出的是包含它的最内层循环体 例输出两个10以内的数,两数的和是5的倍数

8、 #include int main() int i, j; for (i=1; i10; i+) for (j=1; j10; j+) if (i+j)%5=0) printf(“%d %d”, i, j ); break; return 0; ,程序转移语句continue,continue语句用来结束本次循环(while, do-while, for) ,跳过循环体中continue之后尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。注意:在进行终止条件的判断前,都应先执行迭代语句。它的格式为: continue;,程序转移语句continue,程序转移语句continue,

9、例计算1-99之间所有模8余数不等于1的整数的和 #include int main() int i=100, x=0, y=0; while (i0) i-; x = i%8; if (x=1) continue; y = y+x; printf(“y=%d”, y); return 0; ,空语句,仅由一个分号组成的语句为空操作语句。空语句不做任何操作,它在一些特殊情况下是很有用的,如用循环来跳过输入字符开始的空格或制表符: while( ( c = getchar() = = | c = = t) ; 不要以为空语句不做任何操作就可以滥用它,有时会造成语法错误:,返回语句return,r

10、eturn语句从当前函数中退出,返回到调用该函数的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式: return expression; /当函数需要返回某种类型数据时 return; /当函数的返回类型为void时,初等算法,程序数据结构算法 算法:实际问题的求解算法 程序= 函数的调用树 函数= 语句的序列 语句= 简单语句| 复合语句 简单语句= 变量定义与初始化语句| 赋值语句| 函数调用语句| 自增(减)语句| return | 空语句, 复合语句= if-else | switch-case/default | while | do-while | for |

11、 break | continue 、语句与控制流,初等算法数目,例,输入若干整数,以-1结束,输出在-1之前读入的整数个数。 思路:定义一个变量存储每次读入的整数,再定义一个变量记录已经读入的整数的个数 #include int main() int count = 0, tmp = 0; while(tmp!=-1) scanf(“%d”, ,初等算法计数,例,顺序读入一组0,1数字串(不是或输入结束),输出其中0和1的个数 思路:定义两个变量记录输入0,1的个数,一个变量存放输入数据 #include int main() int n0=0, n1=0, tmp=0; while (tm

12、p=0 | tmp=1) scanf(“%d”, ,初等算法求统计值,例,输入若干整数值,以结束,求其中最大、最小和平均值 思路:? #include int main() int max, min, sum, count, tmp; scanf(“%dn”, ,初等算法,程序数据结构算法 算法:实际问题的求解算法 程序= 函数的调用树 函数= 语句的序列 语句= 简单语句| 复合语句 简单语句= 变量定义与初始化语句| 赋值语句| 函数调用语句| 自增(减)语句| return | 空语句, 复合语句= if-else | switch-case/default | while | do-w

13、hile | for | break | continue 、语句与控制流,初等算法数目,例,输入若干整数,以-1结束,输出在-1之前读入的整数个数。 思路:定义一个变量存储每次读入的整数,再定义一个变量记录已经读入的整数的个数 #include int main() int count = 0, tmp = 0; while(tmp!=-1) scanf(“%d”, ,初等算法计数,例,顺序读入一组0,1数字串(不是或输入结束),输出其中0和1的个数 思路:定义两个变量记录输入0,1的个数,一个变量存放输入数据 #include int main() int n0=0, n1=0, tmp=

14、0; while (tmp=0 | tmp=1) scanf(“%d”, ,初等算法求统计值,例,输入若干整数值,以结束,求其中最大、最小和平均值 思路:? #include int main() int max, min, sum, count, tmp; scanf(“%dn”, ,总结,程序结构 循环语句:for, while, do-while 转移控制: break, continue 初等算法,上机作业,P262 输入输出、分支:3.1 输入输出: 3.2 循环: 3.3, 分别使用,for, while, do-while语句实现 有一分数序列2/1, 3/2, 5/3, 8/5, 13/8, 21/13求这个数列的前20项之和。 一个数如果恰好等于它的因子之和,这个数就称为完数,例如6 = 1+2+3, 6就是完数。编程找出1000以内的完数,并按下面格式输出其因子: 6 its factors are 1, 2, 3,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号