




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、UNIX C编程编程yyyy-M- 1age *给一个不多于给一个不多于5位的正整数,求它是几位数,分别打印每一位数字,并按逆序位的正整数,求它是几位数,分别打印每一位数字,并按逆序打印出各位数字。打印出各位数字。求求num的各位数字:的各位数字:ten_tho=num/10000;tho=(num-ten_tho*10000)/1000;hun=(num-ten_tho*10000-tho*1000)/100;ten=(num-ten_tho*10000-tho*1000-hun*100)/10;indiv=(num-ten_tho*10000-tho*1000-hun*100-ten*10
2、)UNIX C编程编程yyyy-M- 2age * 习题习题: 有有4个圆塔,圆心为个圆塔,圆心为(2,2),(-2,2),(-2,-2),(2,-2),圆半,圆半径为径为1,这,这4个塔高个塔高10m,它,它以外无建筑物。现输入任意以外无建筑物。现输入任意一点的坐标,求该点的建筑一点的坐标,求该点的建筑高度(塔外高度为高度(塔外高度为0)。)。UNIX C编程编程yyyy-M- 3age *知识点知识点:& goto循环循环& while循环循环& dowhile循环循环& for循环循环& break、continue语句语句重点:重点: while
3、循环循环 do - while循环循环 for循环循环难点:难点:s for循环循环第第6章章 循环控制循环控制UNIX C编程编程yyyy-M- 4age *6.1 概述概述 循环结构是结构化程序设计的基本结构之一,它和顺序循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。结构、选择结构共同作为各种复杂程序的基本构造单元。 (1) 用用goto语句和语句和if语句构成循环;语句构成循环; (2) 用用while语句;语句; (3) 用用dowhile语句;语句; (4) 用用for语句。语句。 UNIX C编程编程yyyy-M- 5age *6
4、.2 goto语句以及用语句以及用goto语句构成循环语句构成循环q goto语句为无条件转向语句,它的一般形式为语句为无条件转向语句,它的一般形式为 goto 语句标号语句标号;例如:例如:goto label1;q 结构化程序设计方法主张限制使用结构化程序设计方法主张限制使用goto语句。一般来说,可语句。一般来说,可以有两种用途:以有两种用途:v与与if语句一起构成循环结构;语句一起构成循环结构;v从多层循环的内层循环跳到外层循环外时才用到从多层循环的内层循环跳到外层循环外时才用到goto语句。语句。q 这种用法不符合结构化原则,一般不宜采用,只有在不得已时这种用法不符合结构化原则,一般
5、不宜采用,只有在不得已时(例如能大大提高效率例如能大大提高效率)才使用。才使用。UNIX C编程编程yyyy-M- 6age *例例 用用if语句和语句和goto语句构成循环,求语句构成循环,求 。6.2 goto语句以及用语句以及用goto语句构成循环语句构成循环 1001nnmain()int i, sum=0; i=1; loop: if(i=100) sum=sum+i; i+; goto loop; printf(“nsum=%d,sum);sum=5050UNIX C编程编程yyyy-M- 7age *q while语句用来实现语句用来实现“当型当型”循环结构。其一般形式如下:循环
6、结构。其一般形式如下: while (表达式表达式) 语句组语句组 v 当表达式为非当表达式为非0值时,执行值时,执行while语句中的内嵌语句组。语句中的内嵌语句组。 v其特点是:先判断表达式,后执行语句组。其特点是:先判断表达式,后执行语句组。6.3while语句语句UNIX C编程编程yyyy-M- 8age *6.3while语句语句例例 求求 。用传统流程图和。用传统流程图和N-S结构流程图表示算法。结构流程图表示算法。 1001nnmain() int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“%d,sum); 5050U
7、NIX C编程编程yyyy-M- 9age *6.3while语句语句例例 输入两个正整数输入两个正整数m和和n,求其最大公约数和最小公倍数。,求其最大公约数和最小公倍数。q 算法:算法:v n*m p;v 大数放在大数放在n中,小数放在中,小数放在m中中;v m!=0,继续;否则,最后一步继续;否则,最后一步;v r=n%m; mn; r m;v 回到判断回到判断m!=0步步;v 最大公约数为最大公约数为n,最小公倍数为最小公倍数为p/n。input n and m12,35greatest common divisor is 1lease common multiple is 420UNI
8、X C编程编程yyyy-M- 10age *6.3while语句语句 例例 求求Sn=a+aa+aaa+aaa n个个a之值,其中之值,其中a是一个数字。是一个数字。例如:例如:2+22+222+2222+22222(此时此时n=5),n由键盘输入。由键盘输入。q 算法:算法:i=1;sum=0;t=0;输入输入a和和ni=nt=t+a;sum=sum+t;a=a*10;i+;输出输出suminput a and n:2,5a+aa+aaa+.=24690UNIX C编程编程yyyy-M- 11age *q 需要注意:需要注意:v 循环体如果包含一个以上的语句,应该用循环体如果包含一个以上的语
9、句,应该用“ ”括起来,括起来,以复合语句形式出现。以复合语句形式出现。v 在循环体中应有使循环趋向于结束的语句(即改变表达在循环体中应有使循环趋向于结束的语句(即改变表达式的值为式的值为0)。如果无此语句,则表达式的值始终不改变,)。如果无此语句,则表达式的值始终不改变,循环永不结束。循环永不结束。6.3while语句语句UNIX C编程编程yyyy-M- 12age *q do while语句的一般形式为:语句的一般形式为: do 语句组语句组 while (表达式表达式);v 先执行一次指定的语句组,先执行一次指定的语句组,然后判别表达式,当表达式的然后判别表达式,当表达式的值为非值为非
10、0时,返回重新执行语句时,返回重新执行语句组,如此反复,直到表达式的组,如此反复,直到表达式的值等于值等于0为止,此时循环结束。为止,此时循环结束。v 其特点是:先执行语句组,其特点是:先执行语句组,后判断表达式。后判断表达式。6.4 do while语句语句UNIX C编程编程yyyy-M- 13age *q例例 用用do_while语句求语句求 。6.4 do while语句语句 1001nnmain() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(%d,sum); 5050UNIX C编程编程yyyy-M- 14age
11、 *q 如果如果while后面的表达式一开始就为假后面的表达式一开始就为假(0值值)时,两种循环的结果是不同的。时,两种循环的结果是不同的。q 例例 while和和do-while循环的比较。循环的比较。 2次运行程序,各输入次运行程序,各输入1和和11 6.4 do while语句语句 结论:当结论:当while后面的表达式的第一次的值为后面的表达式的第一次的值为“真真”时,两种循环得到时,两种循环得到的结果相同。否则,二者结果不相同的结果相同。否则,二者结果不相同(指二者具有相同的循环体的情况指二者具有相同的循环体的情况)。main() int i,sum=0; scanf(%d,&
12、;i); while (i=10) sum=sum+i; i+; printf(“sum=%d,sum); main() int i,sum=0; scanf(%d,&i); do sum=sum+i; i+; while (i=10); printf(“sum=%d,sum); UNIX C编程编程yyyy-M- 15age *q for语句的一般形式为:语句的一般形式为:for(表达式表达式1;表达式表达式2;表达式表达式3) 语句组语句组 q 执行过程:执行过程:v先求解表达式先求解表达式1。v求解表达式求解表达式2,若其值为真,若其值为真(值为非值为非0),则执,则执行行for
13、语句中的内嵌语句,然后执行下一步。语句中的内嵌语句,然后执行下一步。若为假若为假(值为值为0),则结束循环。,则结束循环。v求解表达式求解表达式3。v转回上面第二步,继续执行。转回上面第二步,继续执行。v循环结束,执行循环结束,执行for语句下面的一个语句。语句下面的一个语句。6.5 for 语句语句UNIX C编程编程yyyy-M- 16age *q for语句最简单的应用形式也就是最易理解的如下形式:语句最简单的应用形式也就是最易理解的如下形式: for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变量增值) 语句组语句组 q 相当于以下语句:相当于以下语句: 表达式表
14、达式1; while(表达式表达式2) 语句语句 表达式表达式3; q 例例: for(i=1;i=100;i+) sum=sum+i;6.5 for 语句语句i=1;while (i=100) sum=sum+i; i+; UNIX C编程编程yyyy-M- 17age *q 说明:说明:v 表达式表达式1省略,此时应在省略,此时应在for语句之前给循环变量赋初值。语句之前给循环变量赋初值。注意省略表达注意省略表达式式1时,其后的分号不能省略。时,其后的分号不能省略。如如for(;i=100;i+) sum=sum+i;执行时,执行时,跳过跳过“求解表达式求解表达式1”这一步,其他不变。这一
15、步,其他不变。v 如果表达式如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式是认为表达式2始终为真。始终为真。v 例如:例如:for(i=1; ;i+) sum=sum+i; 表达式表达式1是一个赋值表达式,表达式是一个赋值表达式,表达式2空缺。空缺。 它相当于:它相当于: i=1; while(1) sum=sum+1; i+;6.5 for 语句语句UNIX C编程编程yyyy-M- 18age *v 表达式表达式3省略,但此时程序设计者应另外设法保证循环能正省略,但此时程序设计者应另外设法保证循环能正常结束。如:
16、常结束。如: for(i=1;i=100;) sum=sum+i; i+;v 表达式表达式1和表达式和表达式3省略,只有表达式省略,只有表达式2,即只给循环条件,即只给循环条件,如:如: for(;i=100;) while(i=100) sum=sum+i; 相当于相当于 sum=sum+i; i+; i+; 在这种情况下,完全等同于在这种情况下,完全等同于while语句语句。6.5 for 语句语句UNIX C编程编程yyyy-M- 19age *v 三个表达式都省略三个表达式都省略 for(;) 语句组语句组 相当于相当于 while(1) 语句组。语句组。 即不设初值,不判断条件即不设
17、初值,不判断条件(认为表达式认为表达式2为真值为真值),循环变量,循环变量不增值。无终止地执行循环体。不增值。无终止地执行循环体。v 表达式表达式1可以是设置循环变量初值的赋值表达式,也可以是可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式与循环变量无关的其他表达式。表达式3也如此。表达式也如此。表达式1和和表达式表达式3也可以是逗号表达式。如也可以是逗号表达式。如: for (sum=0;i=100;i+) sum=sum+i; for(sum=0,i=1;i=100;i+) sum=sum+i; for(i=0,j=100;i=j;i+,j-) k+=i*j;
18、 for(i=1;i=100;i+,i+) sum=sum+i; 相当于相当于 for(i=1;i=100;i=i+2) sum=sum+i;6.5 for 语句语句UNIX C编程编程yyyy-M- 20age *v 表达式一般是关系表达式或逻辑表达式表达式一般是关系表达式或逻辑表达式,但也可以是数值但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。分表达式或字符表达式,只要其值为非零,就执行循环体。分析下面两个例子:析下面两个例子: for(i=0;(c=getchar() != n;i+=c); for( ;(c=getchar()!=n;) printf(%c,c); 作
19、用是每读入一个字符后立即输出该字符,直到输入一个作用是每读入一个字符后立即输出该字符,直到输入一个“换行换行”为止。为止。q 注意,从终端键盘向计算机输入时,是在按注意,从终端键盘向计算机输入时,是在按Enter键以后才送键以后才送到内存缓冲区中去的。运行情况:到内存缓冲区中去的。运行情况: computer (输入输入) computer (输出输出)而不是而不是ccoommppuutteerr 6.5 for 语句语句UNIX C编程编程yyyy-M- 21age *q 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。q 三种
20、循环三种循环(while循环、循环、dowhile循环和循环和for循环循环)可以互相嵌套。可以互相嵌套。q 例如,下面几种都是合法的形式:例如,下面几种都是合法的形式:6.6 循环的嵌套循环的嵌套(2) do do while( ); while( );(3) for(;) for(; ;) (4) while( ) do while( ); (5) for(; ;) while( ) (1) while( ) while( ) (6) do for (; ;) while( );UNIX C编程编程yyyy-M- 22age *q 四种循环都可以用来处理同一问题,一般情况下它们可以互四种循
21、环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡相代替。但一般不提倡用用goto型循环。型循环。q while和和do.while循环,只在循环,只在while后面指定循环条件,在后面指定循环条件,在循环体中应包含使循环趋于结束的语句循环体中应包含使循环趋于结束的语句(如如i+,或,或i=i+1等等)。q for循环可以在表达式循环可以在表达式3中包含使循环趋于结束的操作,甚至中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式可以将循环体中的操作全部放到表达式3中。因此中。因此for语句的功语句的功能更强,凡用能更强,凡用while循环能完成的,用循环能完成的
22、,用for循环都能实现。循环都能实现。q 用用while和和dowhile循环时,循环变量初始化的操作应在循环时,循环变量初始化的操作应在while和和dowhile语句之前完成。而语句之前完成。而for语句可以在表达式语句可以在表达式1中中实现循环变量的初始化。实现循环变量的初始化。q while循型、循型、dowhile循环和循环和for循环,可以用循环,可以用break语句跳语句跳出循环,用出循环,用continue语句结束本次循环。而对用语句结束本次循环。而对用goto语句和语句和if语句构成的循环,不能用语句构成的循环,不能用break语句和语句和continue语句进行控制。语句进
23、行控制。6.7 几种循环的比较几种循环的比较UNIX C编程编程yyyy-M- 23age *q break语句语句v break语句可以用来从循环体内跳出循环体,即提前结束语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。循环,接着执行循环下面的语句。v break语句的一般形式为:语句的一般形式为: break;v break语句不能用于循环语句和语句不能用于循环语句和switch语句之外的任何其语句之外的任何其他语句中。他语句中。6.8break语句和语句和continue语句语句for(r=1;r100) break; printf(%f,area); UNIX C编程编程yyyy-M- 24age *q continue语句语句v 一般形式为:一般形式为: continue;v 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年的借款合同模板
- 2025深圳市汽车租赁合同范本
- 2025婚庆舞台音响灯光租赁合同范本
- 2025江苏南京市房屋租赁合同
- 2025年银行从业人员考试题库及答案
- 2025【总承包合同】劳务分包协议
- 2025个人汽车(车辆按揭)借款合同 中国建设银行福建省分行
- 2025年炭黑原材料采购合同样本
- 2025标准版房屋租赁合同范本2
- 2025国内产品交易合同
- 2024年内蒙古师范大学招聘事业编制人员考试真题
- (二模)2025年河南省五市高三第二次联考历史试卷(含答案)
- 《劳动项目五:煮鸡蛋》(教案)-2024-2025学年人教版劳动三年级上册
- 2025-2030检测设备行业行业风险投资发展分析及投资融资策略研究报告
- (三模)广西2025届高中毕业班4月份适应性测试 英语试卷(含答案解析)
- (四调)武汉市2025届高中毕业生四月调研考试 物理试卷(含答案)
- 2025年济南市中区九年级中考数学一模考试试题(含答案)
- 小学英语名词专项训练单选题100道及答案解析
- 16J914-1 公用建筑卫生间
- TSG11-2020 锅炉安全技术规程
- (完整版)电力排管专项施工方案
评论
0/150
提交评论