循环结构for语句_第1页
循环结构for语句_第2页
循环结构for语句_第3页
循环结构for语句_第4页
循环结构for语句_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 1C程序设计程序设计Programming in C 西安电子科技大学计算机学院西安电子科技大学计算机学院 张淑平张淑平西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 2上次课的内容提要上次课的内容提要pA成立成立不成立不成立ab循环结构循环结构1(while)pAab循环结构循环结构2(until

2、)lwhilewhile语句的循环体执行语句的循环体执行0 0次次或多次或多次while(while(表达式表达式p) p) 循环体语句循环体语句A A;ldo-whiledo-while语句的循环体执行语句的循环体执行1 1次或多次次或多次 do do 循环体语句循环体语句A A; while(while(表达式表达式p);p);西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 3q分析问题,在求解过程中:分析问题,在求解过程中:存在一个(些)运算(动作)需要重复进行(

3、循存在一个(些)运算(动作)需要重复进行(循环)若干次。环)若干次。重复的次数是事先确定的,或者是根据条件确定重复的次数是事先确定的,或者是根据条件确定的。的。q处理循环计算需要明确的三个问题:处理循环计算需要明确的三个问题:循环体:循环体:哪些运算(动作)是需要重复进行的;哪些运算(动作)是需要重复进行的;循环条件:循环条件:重复这些运算的条件是什么,即在什重复这些运算的条件是什么,即在什么情况下终止么情况下终止/ /继续这个重复的过程。继续这个重复的过程。循环准备:循环准备:在进行重复的运算处理之前,需要进在进行重复的运算处理之前,需要进行的准备工作是什么;行的准备工作是什么;循环结构程序

4、的编写要点循环结构程序的编写要点西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 4这次课的主要内容这次课的主要内容西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 5forfor语句的格式和含义语句的格式和含义lforfor语句的基本格式:语句的基本格式:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体

5、语句A Alforfor语句的含义:语句的含义:1)1) 计算表达式计算表达式1 1;2) 2) 计算表达式计算表达式2,2,若表达式若表达式2 2的值为的值为“假假”,则结束,则结束forfor语句语句的执行的执行, ,转转4)4);否则,执行循环体语句;否则,执行循环体语句A;A;3) 3) 计算表达式计算表达式3, 3, 然后转然后转2)2);4) 4) 执行执行forfor语句之后的第一条语句;语句之后的第一条语句;表达式表达式2 2?A真真 假假表达式表达式1 1表达式表达式3 3西安电子科技大学计算机学院 - School of Computer Science & Eng

6、ineering, Xidian University, China 6forfor语句语句:1+2+.+100:1+2+.+100#include main( ) int i, s; printf( %dn ,s);BYNI 1S 0I=100?S S+I输出输出S的值的值开始开始结束结束I I+1ACfor(i = 1,s = 0; i = 100;i+) s += i;西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 7forfor语句中的表达式语句中的表达式lfo

7、rfor语句的基本格式:语句的基本格式:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句A Al一般情况下一般情况下表达式表达式1 1进行循环计算的初始化进行循环计算的初始化处理处理表达式表达式2 2是循环的条件是循环的条件表达式表达式3 3进行的计算能够对表达进行的计算能够对表达式式2 2的值产生影响的值产生影响表达式表达式2 2?A真真 假假表达式表达式1 1表达式表达式3 3西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, Ch

8、ina 8求最大公约数程序求最大公约数程序(for)(for)#include main( ) int m, n, r; printf(input two integers:); scanf(%d%d,&m,&n); printf(ngcd = %dn ,n);YNr不等于不等于0?输出输出n的值的值输入正整数输入正整数m和和n开始开始结束结束m n; n rrm被被n除的余数除的余数rm被被n除的余数除的余数for(r = m % n; r != 0; r = m % n) m = n; n = r;西安电子科技大学计算机学院 - School of Computer Sci

9、ence & Engineering, Xidian University, China 9forfor语句与语句与whilewhile语句的等价关系语句的等价关系lforfor语句的基本格式:语句的基本格式:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句A A表达式表达式2 2?A真真 假假表达式表达式1 1表达式表达式3 3表达式表达式1 1;while (while (表达式表达式2) 2) 循环体语句循环体语句A A; 表达式表达式3 3; 西安电子科技大学计算机学院 - School of Computer Science

10、& Engineering, Xidian University, China 10Y N K 2K不能整除不能整除n?K K+1输出输出n是素数是素数 输入输入n的值的值开始开始结束结束YNK等于等于n?输出输出n不是素数不是素数判断素数算法及程序判断素数算法及程序#include main ( ) int k, n; printf(input an integer:); scanf(%d,&n); k = 2; while (n % k != 0) k+; if ( k = n) printf(%d is a prime.n,n); else printf(%d is no

11、t a prime.n,n);#include main ( ) int k, n; printf(input an integer:); scanf(%d,&n); if ( k = n) printf(%d is a prime.n,n); else printf(%d is not a prime.n,n);for(k = 2; n % k !=0; k+);西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 11forfor语句小结语句小结l表达式表达式1

12、1可放置在可放置在forfor语句之前语句之前for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句A A表达式表达式1;1;for(;for(;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句A Al表达式表达式3 3可放置在可放置在forfor语句的循环体中语句的循环体中for(for(表达式表达式1;1;表达式表达式2;)2;) 循环体语句循环体语句A;A; 表达式表达式3;3; lforfor语句中的表达式可以是语句中的表达式可以是C C语言允许的任何表达式语言允许的任何表达式西安电子科技大学计算机学院 - School of

13、Computer Science & Engineering, Xidian University, China 12forfor语句小结语句小结( (续续) )l进一步,表达式进一步,表达式2 2可以没有,可以没有,表示无休止地循环表示无休止地循环for(for(表达式表达式1;1;表达式表达式3)3) 循环体语句循环体语句A Al三个表达式都省略三个表达式都省略for(;)for(;) 循环体语句循环体语句A AAA表达式表达式1表达式表达式3西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian U

14、niversity, China 13break语句语句西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 14breakbreak语句的作用语句的作用l在在switchswitch语句中使用语句中使用 grade = score / 10; /*百分制成绩百分制成绩score转换为等级分制转换为等级分制*/ switch (grade) case 10: case 9: printf( grade = An ); break; case 8: printf( grade

15、= Bn ); break; case 7: printf( grade = Cn ); break; case 6: printf( grade = Dn ); break; case 5: case 4: case 3: case 2: case 1: case 0: printf( grade = En ); break; default: printf( Invalid data!n ); 西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 15breakbreak

16、语句的作用语句的作用( (续续) )l在循环语句中使用,强行中止循环在循环语句中使用,强行中止循环pA成立成立不成立不成立ab循环结构循环结构1(while)pAab循环结构循环结构2(until)pA成立成立不成立不成立循环结构循环结构 (while)BbreakpA成立成立不成立不成立循环结构循环结构 (while)Bbreak西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 16breakbreak语句的作用语句的作用( (续续) )l在循环语句中使用,强行中止循环

17、在循环语句中使用,强行中止循环/*计算正整数计算正整数m和和n的最大公约数的最大公约数*/ for(k = m; ; k-) if ( n % k = 0 & m % k = 0) break; printf(Gcd = %dn,k);西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 17continue语句语句西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian Universi

18、ty, China 18continuecontinue语句的作用语句的作用l执行流程到达执行流程到达continuecontinue语句时,结束本轮循语句时,结束本轮循环,开始下一轮循环环,开始下一轮循环pA成立成立不成立不成立循环结构循环结构 (while)BpA成立成立不成立不成立循环结构循环结构 (while)BcontinuepA成立成立不成立不成立循环结构循环结构 (while)Bcontinue西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 19conti

19、nuecontinue语句的应用举例语句的应用举例l输出输出100100200200之间所有不能被之间所有不能被3 3整除的整数。整除的整数。#include main( ) int n; for(n = 100; n = 200; n+) if (n % 3 = 0) continue; printf(%dt, n); /*end of for*/西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 20循环嵌套循环嵌套西安电子科技大学计算机学院 - School of C

20、omputer Science & Engineering, Xidian University, China 21循环嵌套的概念循环嵌套的概念l循环语句的内嵌语句仍然是循环语句时,循环语句的内嵌语句仍然是循环语句时,则构成嵌套的循环。则构成嵌套的循环。l筛法求不大于正整数筛法求不大于正整数N N的所有素数的所有素数排列排列2,3,.,N2,3,.,N,取出,取出2 2,再从中删除,再从中删除2 2的倍数;的倍数;取出取出3 3,再从中删除,再从中删除3 3的倍数;的倍数;剩余的数中最小者剩余的数中最小者k k必为素数,取出必为素数,取出k k,再从中删除,再从中删除k k的倍数;重复

21、这一步,直到所有的数都已取走或被删的倍数;重复这一步,直到所有的数都已取走或被删除;除;所有取出的数汇集在一起就形成了不大于所有取出的数汇集在一起就形成了不大于N N的素数表的素数表西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 22 设有两个筛子,分别用设有两个筛子,分别用sievesieve和和primeprime标识,初始时标识,初始时primeprime为空,为空,元素元素2 2n n放在放在sievesieve中中 算法结束时,算法结束时,sievesieve

22、为空,而不为空,而不大于大于n n的素数都放在的素数都放在primeprime中中k找出找出sieve中最小的数中最小的数sieve不为空?不为空?Y置置prime为空,为空,sieve包含包含整数整数2,3,.,n2,3,.,n开始开始结束结束将将k放入放入prime中中从从sieve中去掉中去掉k及其倍数及其倍数Nj kjn?从从sieve中去掉中去掉jj j + kYN求精求精筛法求素数筛法求素数西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 23百钱百鸡问题百钱

23、百鸡问题 中国古代数学家张丘建在他的中国古代数学家张丘建在他的算经算经中曾提出中曾提出著名的著名的“百钱百鸡问题百钱百鸡问题”,其题目如下:,其题目如下: 鸡翁鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?百钱买百鸡,翁、母、雏各几何? 西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 24百钱百鸡问题百钱百鸡问题1003kj3i5100kji解:设解:设i i、j j、k k分别代表公鸡、母鸡、

24、小鸡的数分别代表公鸡、母鸡、小鸡的数量,根据题意列方程:量,根据题意列方程: 根据题意可知,根据题意可知,i i、j j、k k的范围一定是的范围一定是0 0到到100100的正的正整数整数,那么,最简单的解题方法是:穷举,那么,最简单的解题方法是:穷举i i、j j、k k每一种可能的取值组合,直接代入方程组,若满每一种可能的取值组合,直接代入方程组,若满足该方程组则是一组解。这样即可得到问题的全足该方程组则是一组解。这样即可得到问题的全部解。部解。 西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 25百钱百鸡问题百钱百鸡问题i 0i 20?买母鸡和买母鸡和小鸡小鸡NY开始开始结束结束i i + 1YNj 34?j j + 1j 0买小鸡买小鸡YNk 100?k k + 1k 0将将i、j、k代入代入i+j+k和和5i+3j+k/3,若都为若都为100,则是一,则是一种买法种买法西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China 26i = 0;while (i 20 ) i+; int i, j, k; j = 0;while

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论