您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 循环结构for语句.
ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China1C程序设计ProgramminginC西安电子科技大学计算机学院张淑平ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China2上次课的内容提要pA成立不成立ab循环结构1(while)pAab循环结构2(until)while语句的循环体执行0次或多次while(表达式p)循环体语句A;do-while语句的循环体执行1次或多次do循环体语句A;while(表达式p);ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China3分析问题,在求解过程中:存在一个(些)运算(动作)需要重复进行(循环)若干次。重复的次数是事先确定的,或者是根据条件确定的。处理循环计算需要明确的三个问题:循环体:哪些运算(动作)是需要重复进行的;循环条件:重复这些运算的条件是什么,即在什么情况下终止/继续这个重复的过程。循环准备:在进行重复的运算处理之前,需要进行的准备工作是什么;循环结构程序的编写要点ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China4这次课的主要内容for语句break语句continue语句循环嵌套ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China5for语句的格式和含义for语句的基本格式:for(表达式1;表达式2;表达式3)循环体语句Afor语句的含义:1)计算表达式1;2)计算表达式2,若表达式2的值为“假”,则结束for语句的执行,转4);否则,执行循环体语句A;3)计算表达式3,然后转2);4)执行for语句之后的第一条语句;表达式2?A真假表达式1表达式3ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China6for语句:1+2+...+100#includestdio.hmain(){inti,s;printf(%d\n,s);}TC2.0BYNI←1S←0I=100?S←S+I输出S的值开始结束I←I+1ACfor(i=1,s=0;i=100;i++){s+=i;}ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China7for语句中的表达式for语句的基本格式:for(表达式1;表达式2;表达式3)循环体语句A一般情况下表达式1进行循环计算的初始化处理表达式2是循环的条件表达式3进行的计算能够对表达式2的值产生影响表达式2?A真假表达式1表达式3ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China8求最大公约数程序(for)#includestdio.hmain(){intm,n,r;printf(inputtwointegers:);scanf(%d%d,&m,&n);printf(\ngcd=%d\n,n);}TC2.0YNr不等于0?输出n的值输入正整数m和n开始结束m←n;n←rr←m被n除的余数r←m被n除的余数for(r=m%n;r!=0;r=m%n){m=n;n=r;}ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China9for语句与while语句的等价关系for语句的基本格式:for(表达式1;表达式2;表达式3)循环体语句A表达式2?A真假表达式1表达式3表达式1;while(表达式2){循环体语句A;表达式3;}ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China10YNK←2K不能整除n?K←K+1输出n是素数输入n的值开始结束YNK等于n?输出n不是素数判断素数算法及程序#includestdio.hmain(){intk,n;printf(inputaninteger:);scanf(%d,&n);k=2;while(n%k!=0){k++;}if(k==n)printf(%disaprime.\n,n);elseprintf(%disnotaprime.\n,n);}TC2.0#includestdio.hmain(){intk,n;printf(inputaninteger:);scanf(%d,&n);if(k==n)printf(%disaprime.\n,n);elseprintf(%disnotaprime.\n,n);}for(k=2;n%k!=0;k++);ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China11for语句小结表达式1可放置在for语句之前for(表达式1;表达式2;表达式3)循环体语句A表达式1;for(;表达式2;表达式3)循环体语句A表达式3可放置在for语句的循环体中for(表达式1;表达式2;){循环体语句A;表达式3;}for语句中的表达式可以是C语言允许的任何表达式ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China12for语句小结(续)进一步,表达式2可以没有,表示无休止地循环for(表达式1;;表达式3)循环体语句A三个表达式都省略for(;;)循环体语句AAA表达式1表达式3ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China13break语句ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China14break语句的作用在switch语句中使用grade=score/10;/*百分制成绩score转换为等级分制*/switch(grade){case10:case9:printf(grade=A\n);break;case8:printf(grade=B\n);break;case7:printf(grade=C\n);break;case6:printf(grade=D\n);break;case5:case4:case3:case2:case1:case0:printf(grade=E\n);break;default:printf(Invaliddata!\n);}ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China15break语句的作用(续)在循环语句中使用,强行中止循环pA成立不成立ab循环结构1(while)pAab循环结构2(until)TC2.0pA成立不成立循环结构(while)BbreakpA成立不成立循环结构(while)BbreakProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China16break语句的作用(续)在循环语句中使用,强行中止循环/*计算正整数m和n的最大公约数*/for(k=m;;k--)if(n%k==0&&m%k==0)break;printf(Gcd=%d\n,k);TC2.0ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China17continue语句ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China18continue语句的作用执行流程到达continue语句时,结束本轮循环,开始下一轮循环pA成立不成立循环结构(while)BpA成立不成立循环结构(while)BcontinuepA成立不成立循环结构(while)BcontinueProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China19continue语句的应用举例输出100~200之间所有不能被3整除的整数。#includestdio.hmain(){intn;for(n=100;n=200;n++){if(n%3==0)continue;printf(%d\t,n);}/*endoffor*/}TC2.0ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China20循环嵌套ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China21循环嵌套的概念循环语句的内嵌语句仍然是循环语句时,则构成嵌套的循环。筛法求不大于正整数N的所有素数–排列2,3,...,N,取出2,再从中删除2的倍数;–取出3,再从中删除3的倍数;–剩余的数中最小者k必为素数,取出k,再从中删除k的倍数;重复这一步,直到所有的数都已取走或被删除;–所有取出的数汇集在一起就形成了不大于N的素数表ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China22•设有两个筛子,分别用sieve和prime标识,初始时prime为空,元素2~n放在sieve中•算法结束时,sieve为空,而不大于n的素数都放在prime中k←找出sieve中最小的数sieve不为空?Y置prime为空,sieve包含整数2,3,...,n开始结束将k放入prime中从sieve中去掉k及其倍数Nj←kj≤n?从sieve中去掉jj←j+kYN求精筛法求素数ProgramminginC西安电子科技大学计算机学院-SchoolofComputerScience&Engineering,XidianUniversity,China23百钱百鸡问题•中国古代数学家张丘建在他的《算经》中曾提出著名的“百钱百鸡问题”,其题目如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?ProgramminginC西安电子科技大学计算机学院-Schoolof
本文标题:循环结构for语句.
链接地址:https://www.777doc.com/doc-2435184 .html