




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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/default表达式e
2、xpression的值类型必须是整型或字符型:char, short, int, longcase子句中的值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;例 case a: case b: cas
3、e 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循环语句for循环语句for另一种当型循环for(初始条件表达式;循环控制表达式;循
4、环操作表达式)语句/语句组一次for循环执行过程首先执行初始条件表达式第一次:可以为空循环控制表达式:一定是一个数值表达式,也可以为空如果表达式值为真,条件成立,执行循环体一次如果表达式值为假,条件不成立,退出循环如果省略,默认值为真,直到遇到break, return语句退出循环循环操作表达式:也可为空初始条件表达式语句语句组循环操作表达式循环控制表达式循环语句for例,计算从0到100的整数中有多少个数是偶数包括,奇数中有多少数是的倍数#include int main() int i, n2=0, n3=0; for(i=0; i=100; i+) if (i%2=0) n2+; els
5、e 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(“sum=%dn, sum); return 0;循环语句while循环语句do
6、-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 循环 。for(x=0,y=0;(y!=123)&(x0); a的值是 。A. 5B. 0C. 1D
7、. -2答案 B, C 程序转移语句程序转移相关语句包括:breakcontinue程序转移语句break在switch语中,break语句用来终止switch语句的执行,使程序从整个switch语句后的第一条语句开始执行在循环语句中(while, do-while, for),break用于终止并跳出循环,从紧跟着循环体代码段后的语句执行。break语句的格式为:break;程序转移语句breakbreak退出的是包含它的最内层循环体例输出两个10以内的数,两数的和是5的倍数#include int main()int i, j; for (i=1; i10; i+) for (j=1; j
8、10; j+) if (i+j)%5=0) printf(“%d %d, i, j ); break; return 0; 程序转移语句continuecontinue语句用来结束本次循环(while, do-while, for) ,跳过循环体中continue之后尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。注意:在进行终止条件的判断前,都应先执行迭代语句。它的格式为:continue;程序转移语句continue程序转移语句continue例计算1-99之间所有模8余数不等于1的整数的和#include int main()int i=100, x=0, y=0; whil
9、e (i0) i-; x = i%8; if (x=1) continue; y = y+x; printf(“y=%d, y); return 0; 空语句仅由一个分号组成的语句为空操作语句。空语句不做任何操作,它在一些特殊情况下是很有用的,如用循环来跳过输入字符开始的空格或制表符:while( ( c = getchar() = = | c = = t) ;不要以为空语句不做任何操作就可以滥用它,有时会造成语法错误:返回语句returnreturn语句从当前函数中退出,返回到调用该函数的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return expression
10、; /当函数需要返回某种类型数据时return; /当函数的返回类型为void时初等算法程序数据结构算法算法:实际问题的求解算法程序= 函数的调用树函数= 语句的序列语句= 简单语句| 复合语句简单语句= 变量定义与初始化语句| 赋值语句|函数调用语句| 自增减语句| return | 空语句,复合语句= if-else | switch-case/default | while |do-while | for | break | continue 、语句与控制流初等算法数目例,输入假设干整数,以-1结束,输出在-1之前读入的整数个数。思路:定义一个变量存储每次读入的整数,再定义一个变量记录已
11、经读入的整数的个数#include int main()int count = 0, tmp = 0;while(tmp!=-1)scanf(“%d, &tmp); if (tmp!=-1) count+; printf(“%dn, count);return 0;初等算法计数例,顺序读入一组0,1数字串不是或输入结束,输出其中0和1的个数思路:定义两个变量记录输入0,1的个数,一个变量存放输入数据#include int main()int n0=0, n1=0, tmp=0; while (tmp=0 | tmp=1) scanf(“%d, &tmp); if (tmp=0) n0+; e
12、lse if (tmp=1) n1+; printf(“%d %d, n0, n1);初等算法求统计值例,输入假设干整数值,以结束,求其中最大、最小和平均值思路:?#include int main()int max, min, sum, count, tmp; scanf(“%dn, &tmp); if (tmp=0) return; max = min =sum =tmp; count+; while (tmp!=0)scanf(“%dn, tmp); if(tmp!=0) sum += tmp; count+; if (tmpmax) max=tmp; if (tmpmin) min=t
13、mp; printf(“max=%d, min =%d, average=%dn, max, min, sum/count); return 0; 初等算法程序数据结构算法算法:实际问题的求解算法程序= 函数的调用树函数= 语句的序列语句= 简单语句| 复合语句简单语句= 变量定义与初始化语句| 赋值语句|函数调用语句| 自增减语句| return | 空语句,复合语句= if-else | switch-case/default | while |do-while | for | break | continue 、语句与控制流初等算法数目例,输入假设干整数,以-1结束,输出在-1之前读入的
14、整数个数。思路:定义一个变量存储每次读入的整数,再定义一个变量记录已经读入的整数的个数#include int main()int count = 0, tmp = 0;while(tmp!=-1)scanf(“%d, &tmp); if (tmp!=-1) count+; printf(“%dn, count);return 0;初等算法计数例,顺序读入一组0,1数字串不是或输入结束,输出其中0和1的个数思路:定义两个变量记录输入0,1的个数,一个变量存放输入数据#include int main()int n0=0, n1=0, tmp=0; while (tmp=0 | tmp=1) s
15、canf(“%d, &tmp); if (tmp=0) n0+; else if (tmp=1) n1+; printf(“%d %d, n0, n1);初等算法求统计值例,输入假设干整数值,以结束,求其中最大、最小和平均值思路:?#include int main()int max, min, sum, count, tmp; scanf(“%dn, &tmp); if (tmp=0) return; max = min =sum =tmp; count+; while (tmp!=0)scanf(“%dn, tmp); if(tmp!=0) sum += tmp; count+; if (tmpmax) max=tmp; if (tmpmin) min=tmp; printf(“max=%d, min =%d, average=%dn, max, min, sum/count); return 0; 总结程序结构循环语句:for, while, do-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建设手续代理合同协议
- 工程联营合同协议范本
- ktv电路维修合同协议
- 1个月合同协议
- 合同更换名称补充协议
- 50吊车租赁合同协议
- 建筑工程原材料合同协议
- 建筑混凝土合同协议
- 庭院绿化工程合同协议
- 工程维修咨询合同协议
- 现代物流园区的应急物资储备与调配
- 2025年河南省高职单招计算机类职业技能测试题库及答案(供参考)
- 气管切开拔管指征及护理
- DB11-T 1390.4-2018 环卫车辆功能要求 第4部分:餐厨废弃油脂运输车辆
- 化工生产基础知识习题库
- 2024年医疗大数据分析与应用项目合同
- 2025风电机组无人机巡检技术方案
- 大学武术知到智慧树章节测试课后答案2024年秋浙江大学
- 2025年中移铁通限公司公开招聘工作人员100名高频重点提升(共500题)附带答案详解
- 2025年度学院学术委员会专家聘用合同3篇
- 建筑业职业危害防治措施
评论
0/150
提交评论