《C语言循环结构》由会员分享,可在线阅读,更多相关《C语言循环结构(47页珍藏版)》请在人人文库网上搜索。

1、UML和需求建模,第六章,循环控制,UML和需求建模,主要内容,6.1 概述 6.2 goto语句以及用goto语句构成循环 6.3 用while语句实现循环 6.4 用do-while语句实现循环 6.5 用for 语句实现循环 6.6 循环的嵌套 6.7 几种循环的比较 6.8 break语句continue和语句 6.9 程 序 举 例,UML和需求建模,6.1 概述,什么是循环? 为什么要使用循环,问题1,问题2:求学生平均成绩,UML和需求建模,循环,UML和需求建模,生活中的例子: 击鼓传花:大家坐成一个圈,鼓声响起的时候将花束顺序交到下一个人的手里,依次向下传递,当鼓声突然中断时。

2、停止传花,花束落在谁的手里便成为输家 4100米接力赛跑:第1个人跑完100米后将接力棒传给第2个人,第2个人再跑100米,然后是第3个人,直到第4个人跑完最后一个100米 共同点: 都要完成相同的任务:量变的重复内容 都有结束条件:发生质变的界限,UML和需求建模,6.2 goto语句以及用goto语句构成循环,goto语句无条件转向语句 goto 语句标号; 语句标号用标识符表示, 例如:goto label_1; 合法; goto 123; 不合法,UML和需求建模,例6.1】 用goto语句和if语句构成循环, 计算sum=1+2+3+100 。 main() int i,sum=0;。

3、 i=1; loop: if(i=100) sum=sum+i; i+; goto loop; printf(%dn,sum);,UML和需求建模,6.2 goto语句以及用goto语句构成循环,滥用goto语句将使程序流程无规律、可读性差. 不建议使用goto语句。 一般来说,可以有两种用途: (1) 与if语句一起构成循环结构; (2) 从循环体中跳转到循环体外,UML和需求建模,6.3 用while语句实现循环,while语句用来实现“当型”循环结构。 一般形式: while (表达式) 语句 执行过程:计算表达式值,若该值为非0时,则执行while语句中的内嵌语句。然后重复上述步骤,直。

4、到表达式值为假(为0),则执行while语句的下一条语句。 其特点是:先判断表达式,后执行语句,循环体语句,UML和需求建模,6.3 用while语句实现循环,注意: 循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。 在循环体中应有使循环趋向于结束的语句,UML和需求建模,1. 计算sum=1+2+3+100,UML和需求建模,第5章 循环程序设计,1. 计算sum=1+2+3+100,循环体,循环控制条件,循环控制变量,循环的初始化,include void main( ) int i=1, sum=0 ; while ( i = 100 ) sum = sum + i。

5、 ; i+ ; printf ( “Sum = %d n”, sum ) ;,UML和需求建模,第5章 循环程序设计,2. 计算sum=2+4+6+100,循环体,循环控制条件,循环控制变量,循环的初始化,include void main( ) int i=2, sum=0 ; while ( i = 100 ) sum = sum + i ; i+=2 ; printf ( “Sum = %d n”, sum ) ;,UML和需求建模,2. 计算sum=2+4+6+100,循环体,循环控制条件,循环控制变量,循环的初始化,include void main( ) int i=2, sum=。

6、0 ; while ( i = 100 ) sum = sum + i ; i+=2 ; printf ( “Sum = %d n”, sum ) ;,UML和需求建模,6.4 do-while语句,do-while语句的特点: 先执行循环体,然后判断循环条件是否成立。 一般形式: do 循环体语句 while (表达式,执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束,UML和需求建模,6.4 用do-while语句实现循环,while语句和用do-while语句的比较: 二者是完。

7、全等价的。 do-while语句有可能一次也不执行循环体,UML和需求建模,循环的变化:sum=1+2+3+100,include void main( ) int i=1, sum=0 ; while ( i= 100 ) sum = sum + i; i+ ; printf ( “Sum = %d n”, sum ) ;,include void main( ) int i=1, sum=0 ; do sum = sum + i ; i+; while ( i= 100 ); printf ( “Sum = %d n”, sum ) ;,UML和需求建模,顺序打印1-10的阶乘,即1!, 。

8、2!, , 10,本题的关键是求阶乘 数学上,n!=123(n-1)n,UML和需求建模,外循环,内循环,对比程序:(更优) #include void main( ) int i=1; float f = 1; while( i = 10 ) f = f * i; printf( %2d! = %.0f n, i, f ); i + ; 思考一下:8-10的阶乘,include void main( ) int i=1, j ; float f ; while( i = 10 ) j = 1; f = 1; while( j = i ) f = f * j; j + ; printf( “ 。

9、%2d! = %.0f n”, i, f ); i + ;,UML和需求建模,6.5 用for 语句实现循环,一般形式: for(表达式1;表达式2;表达式3) 语句,表达式1:初始化表达式,只执行一次 表达式2:循环控制表达式,控制循环的结束 表达式3:增量表达式 ,使表达式2趋向于假,UML和需求建模,6.5 用for 语句实现循环,for语句的执行过程: (1) 先求解表达式1。 (2) 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假(值为0),则结束循环转到第(5)步。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执行。 。

10、(5) 循环结束,执行for语句下面的一个语句,UML和需求建模,任意输入10个数,求平均值,include void main( ) int i ; float x, sum=0 ; printf( Enter 10 numbers one by one: n ); for( i =1 ; i=10 ; i+) scanf( %f,UML和需求建模,例:顺序打印1-10的阶乘,即1!, 2!, 3!, , 10,include void main( ) int i, j ; float f ; for( i=1; i = 10 ; i+ ) f = 1; for( j=1; j = i ; 。

11、j+ ) f = f * j; printf( %2d! = %.0f n, i, f );,include void main( ) int i=1, j ; float f ; while( i = 10 ) j = 1; f = 1; while( j = i ) f = f * j; j + ; printf( “ %2d! = %.0f n”, i, f ); i + ;,UML和需求建模,例:打印几何图形,对于这类问题,每行中星号的个数、总行数等都应该用循环结构进行控制,而不是直接输出若干行字符串,include void main( ) int i, j ; for(i=1; i。

12、 = 4; i+ ) for( j = 0; ji ; j+ ) putchar( ); for( j = 1; j=4 ; j+ ) putchar(*); putchar(n);,UML和需求建模,for语句的变化形式,可以省略for语句的“表达式1”或“表达式3”,也可以都省略(“退化为”while语句,例:将用键盘输入的若干字符顺序输出到屏幕上,include void main( ) char ch ; for( ; (ch=getchar( ) ) !=n ; ) putchar( ch ) ;,UML和需求建模,6.6 循环的嵌套,一个循环体内又包含另一个完整的循环结构 称为循环。

13、的嵌套。内嵌的循环中还可以嵌套 循环,这就是多层循环。 三种循环(while循环、do-while循环和for循 环)可以互相嵌套,UML和需求建模,6.6 循环的嵌套,下面几种都是合法的形式: (1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while(,UML和需求建模,6.6 循环的嵌套,4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while(,UML和需求建模,错误的嵌 套形式,循环必须是完整的,不允许内外循环交叉嵌套 f = 1; while。

14、( i 10) i=1; do f = f * i; i +; while( i10,混乱的控 制条件,内外循环的循环控制条件通常是分开的,相对独立的 i=1; s=0; while ( i 3 ) s = s + f; i = 1; f=1; while( i5) i +=2; f = f * i; i+ ;,UML和需求建模,6.7 几种循环的比较,1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。 (2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语。

15、句(如i+,或i=i+1等,UML和需求建模,6.7 几种循环的比较,for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。 (3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化,UML和需求建模,6.7 几种循环的比较,4)while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环(break语句和continue语。

16、句见下节)。而对用goto语句和if语句构成的循环,不能用 break语句和continue语句进行控制,UML和需求建模,6.8 break语句和continue语句,6.8.1 break语句 break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句 一般形式: break; 注意:break语句不能用于循环语句和switch语句之外的任何其他语句中,UML和需求建模,6.8 break语句和continue语句,例:计算r=1到r=10时的圆面积,直到面积area大于100为止。 float pi=3.14159; for( ) area=pi*r*r; pri。

17、ntf(r=%f,area=%fn,r,area);,当area100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环,r=1;r=10;r,r=1;r=10;r,if(area100) break,UML和需求建模,6.8 break语句和continue语句,6.8.2 continue语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定. 一般形式: continue,UML和需求建模,6.8 break语句和continue语句,continue语句和break语句的区别 continue语句只结束本次循环,而不是终止整个循环的。

18、执行,while(表达式1) for if(表达式2) continue;,UML和需求建模,6.8 break语句和continue语句,continue和break的区别 break语句则是结束整个循环过程,不再判断执行循环的条件是否成立,while(表达式1) for if(表达式2) break;,UML和需求建模,6.9 程序举例,例6.6用/41-1/3+1/5-1/7+公式求的近似值,直到某一项的绝对值小于为止。 N-S图表示算法,UML和需求建模,fabs(t ()=1e-6,float s=1.0,pi=0; int s=1,n=1; while( ) pi+=t; n+=2。

19、; s=-s; t=s/n; pi*=4,UML和需求建模,6.9 程序举例,例6.7 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3) 算法如图所示,UML和需求建模,6.9 程序举例,例6.8 判断m是否素数。 算法思想:让m被2到除,如果m能被2之中任何一个整数整除,则提前结束循环,此时i必然小于或等于k(即);如果m不能被2k(即)之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止。

20、循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,因此输出“是素数,UML和需求建模,UML和需求建模,float k; int m,i=2; scanf(“%d”,k=sqrt(m,if (m%i=0) break,ik+1,UML和需求建模,6.9 程序举例,例6.10 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。 思路:可以按以下规律将电文变成密码: 将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D,UML和需求建模,练习 1.已知在某C语言编译系统中表达式siz。

21、eof(int)的值是2,如果希望将常量-70 000正确地保存在一个变量a中,该变量声明语句应该是________。 A. int a;B. long int a;C. unsigned int a;D. unsigned long int a; 2.常量n的数据类型是_________。 3.C语言的源程序中若出现常量1L,则该常量的类型是__________。 4.(2005年秋)以下声明中错误的是______________。 A.int a=0 xFFB.double a=1.2e0.5C.long a=2L D. char a=72,UML和需求建模,练习:以下程序运行后的输出结果。

22、的第一行是_________,第二行是__________。 #include void main() int i=5; do switch(i%2) case 0: i-; break; case 1: i-; continue; i-;printf(%dn, i); while(i0);,UML和需求建模,计算 (1!)+(1!+2!)+(1!+2!+3!)+(1! +2!+3!+20!)。 main() int i, n; double s=0, t; for(i=1;i=20;i+) _______; for(n=1; ______;n+) t=t*n;s=s+t; printf(1!)+(1!+2!)+(1! +2!+20!)=%en,s。

加法接力赛C语言算法,C语言循环结构相关推荐

  1. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)

    第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1) #include<stdio.h>int main(void){ /******** ...

  2. 第1关:小球自由落体运动-------C语言程序设计技术(循环结构程序设计1)

    第1关:小球自由落体运动-------C语言程序设计技术(循环结构程序设计1) #include<stdio.h> #include<math.h>int main(void) ...

  3. 第5关:C循环-寻找完数-------C语言程序设计技术(循环结构程序设计2)

    第5关:C循环-寻找完数-------C语言程序设计技术(循环结构程序设计2) #include<stdio.h>int main(void){ /*********Begin****** ...

  4. 黄建c语言教程,黄建的C语言PPT课件,C_03_循环结构.ppt

    黄建的C语言PPT课件,C_03_循环结构.ppt while 语句 while语句 [2010.9.20]以下程序的运行结果是 int a = 1, b = 2; while (a < 6) ...

  5. c语言程序设计循环结构求奇数和,C语言程序设计实验报告循环结构程序设计.doc...

    C语言程序设计实验报告循环结构程序设计 C语言实验报告 课程__C程序设计_实验名称_循环结构程序设计__第 页 共 页 系 别__电气工程______________________ 实 验 日 期 ...

  6. 第4关:字符串中各类字符数的统计-------C语言程序设计技术(循环结构程序设计1)

    第4关:字符串中各类字符数的统计-------C语言程序设计技术(循环结构程序设计1) #include<stdio.h>int main(void){ /*********Begin** ...

  7. 【C语言基础05】循环结构程序设计(含经典代码解析)

    目录 5.1 while语句 5.2 do-while语句 5.3 for语句 5.4 三种循环的比较 5.5 循环的嵌套 5.6 break语句和continue语句 5.7 综合案例 循环结构又称 ...

  8. C语言-小黄鸭☞循环结构while

    C语言循环结构 while循环的用法 while (表达式) { 语句: } 当表达式为真,则执行下面的语句:语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句:然后再判断表达式是否为真 ...

  9. C语言-小黄鸭☞循环结构 之 for()

    C语言循环结构 for循环的用法 for(单次表达式;条件表达式;自变表达式) { 中间循环体 } 其中,表达式皆可以省略,但分号不可省略,因为";"可以代表一个空语句,省略了之后 ...

最新文章

  1. AAAI 2020 | 华南理工:面向文本识别的去耦注意力网络
  2. 网络编程学习笔记(recvmsg和sendmsg函数)
  3. 分页原理+软件架构师
  4. oracle10g密钥,Oracle10G透明数据加密技术如何使用呢?
  5. lua虚拟机字节码修改_LUA虚拟机的字节码怎么看?
  6. Python爬虫入门学习--中国大学排名
  7. 高并发的常见策略--大型web项目
  8. python自动化运维快速入门 pdf 郑征_Python自动化运维快速入门
  9. java Structs 介绍
  10. 现在计算机上都有高速缓冲存储器,高速缓冲存储器(Cache.一般采用DRAM构成
  11. 建站选择Linux还是Windows操作系统?
  12. 102 613 SWP协议学习笔记--SHDLC
  13. 用Python制作好玩的小游戏
  14. 中国肥胖地图出炉,北方人腰更粗实锤了
  15. 客户端呼叫Flash Medis Server3服务端入门
  16. 半监督3D医学图像分割(四):SASSNet
  17. 某线下水果店销售数据分析
  18. django+wkhtmltopdf后端生成pdf
  19. USBWriter之后恢复磁盘大小
  20. Bacnet IP协议和Java实现

热门文章

  1. HashMap之链表转红黑树(树化 )-treefyBin方法源码解读(所有涉及到的方法均有详细解读,欢迎指正)
  2. shtml 是什么?
  3. SendMessgae
  4. 帮我生成一份能够使图像感情化的Matlab代码
  5. VMware ESxi 7.0定时关机
  6. 海外抖音Tiktok这么火,到底值不值得做?
  7. 通信协议——MII/GMII
  8. 用连接去创造,研发不再成为老大难
  9. 亡羊补牢为时未晚,网络安全从现在做起
  10. request.setAttribute()的用法