您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 幻灯片-C语言程序设计视频教程-徐红波-第6章
C程序设计讲师:徐红波Email:x_h_b@tom.com第6章循环控制6.1概述在许多问题中需要用到循环控制。例如,要输入全校学生成绩;求若干个数之和;迭代求根等。绝大多数的应用程序都包含循环。循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。6.2goto语句以及用goto语句构成循环goto语句为无条件转向语句,它的一般形式为:goto语句标号;语句标号用标识符表示。例如:gotolabel_1;结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。但不是绝对禁止使用goto语句。一般来说,有两种用途:(1)与if语句一起构成循环结构。(2)从循环体中跳转到循环体外。[例6.1]用if语句和goto语句构成循环,求1+2+…+100#includestdio.hvoidmain(){inti,sum=0;i=1;loop:if(i=100){sum=sum+i;i++;gotoloop;}printf(“%d\n”,sum);}6.3用while语句实现循环while语句用来实现“当型”循环结构。一般形式如下:while(表达式)语句表达式语句0非0[例6.2]用while语句构成循环求1+2+…+100i=1sum=sum+ii=i+1当i≤100sum=06.4用do…while语句实现循环do…while语句的特点是先执行循环体,然后判断循环条件是否成立。一般形式为:do循环体语句while(表达式);表达式循环体语句0非0[例6.3]用do…while语句求1+2+…+100i=1sum=sum+ii=i+1当i≤100sum=0[例6.4]while和do…while循环的比较#includestdio.hvoidmain(){intsum=0,i;scanf(“%d”,&i);while(i=10){sum=sum+i;i++;}printf(“sum=%d\n”,sum);}#includestdio.hvoidmain(){intsum=0,I;scanf(“%d”,&i);do{sum=sum+i;i++;}while(i=10);printf(“sum=%d\n”,sum);}6.5用for语句实现循环C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。for语句的一般形式为:for(语句1;语句2;语句3)语句表达式2求解表达式10非0语句求解表达式3for语句的下一语句for语句最简单的应用形式:for(循环变量赋初值;循环条件;循环变量增值)语句for语句的一般形式可以改写为while循环的形式:表达式1;while(表达式2){语句表达式3;}说明:(1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。(2)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。(5)3个表达式都可省略。(6)表达式1可以是设置循环变量初值得赋值表达式,也可以是与循环变量无关的其他表达式。(7)表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。6.6循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。3种循环(while循环、do…while循环和for循环)可以相互嵌套。6.7几种循环的比较(1)4种循环都可以用来处理同一问题,一般情况下它们可以相互替代。但一般不提倡用goto型循环。(2)在while循环和do…while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++或i=i+1等)。(3)用while和do…while循环时,循环变量初始化的操作应在while和do…while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。(4)while循环、do…while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。6.8break语句和continue语句6.8.1break语句用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。break还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。6.8.2continue语句其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。[例6.5]把100~200之间的不能被3整除的数输出#includestdio.hvoidmain(){intn;for(n=100;n=200;n++){if(n%3==0)continue;printf(“%d“,n);}printf(“\n”);}6.9程序举例[例6.6]用/4≈1-1/3+1/5-1/7+…公式求的近似值,直到某一项的绝对值小于10-6为止pi=pi*4pi=pi+t当|t|≥10-6t=1,pi=0,n=1,s=1n=n+2s=-st=s/n输出pi[例6.7]求Fibonacci数列前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和F1=1(n=1)Fn=Fn-1+Fn-2(n≥3)F2=1(n=2)输出f1、f2fori=1to20f1=1,f2=1f1=f1+f2f2=f2+f1[例6.8]判断m是否素数[例6.9]求100~200间的全部素数当i≤ki=2i=i+1m是素数k=sqrt(m)读入mm不是素数i≥k+1真假用break结束循环m被i整除真假[例6.10]译密码。为使电文保密,往往按一定规律将其转换成密码,受保人再按约定的规律将其译回原文例如,可以按一下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。例如“China!”转换为“Glmre!”。习题6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字母的个数。6.3求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(此时n=5)6.4求1!+2!+3!+4!+…+20!6.6输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+336.8有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和6.14输出以下图案*************************
本文标题:幻灯片-C语言程序设计视频教程-徐红波-第6章
链接地址:https://www.777doc.com/doc-3985541 .html