C语言循环语句和循环控制例题解析_第1页
C语言循环语句和循环控制例题解析_第2页
C语言循环语句和循环控制例题解析_第3页
C语言循环语句和循环控制例题解析_第4页
C语言循环语句和循环控制例题解析_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、一、循环控制(一)、break语句break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。例如:intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)if

2、(i=51)break;/*如果i等于51,则跳出循环*/sn+=i;/*1+2+50*/printf(%dn,sn);可以看出,最终的结果是1+2+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do-while循环中增加break语句。注意:1.break语句对if-else的条件语句不起作用。2.在多层循环中,一个break语句只向外跳一层。例如:intmain(intargc,char*argv)inti,j;printf(ijn);for(i=0;i2;i+)for(j=0;j3;j+)if(j=2)break;printf(%d%dn,i,j);输出结果为:i

3、j00011011当i=0,j=2时,执行break语句,跳出到外层的循环,i变为1。(二)、continue语句continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。例如:intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)if(i=51)continue;/*如果i等于51,则结束本次循环*/sn+=i;/*1+2+50+52+100*/printf(%dn,sn);从程序中可以看出,continue语句只

4、是当前的值没有执行,也就是说当前的值跳过去了,接着执行下次循环。intmain(intargc,char*argv)inti,j;printf(ijn);for(i=0;i2;i+)for(j=0;j3;j+)if(j=1)continue;printf(%d%dn,i,j);输出结果为:ij00021012(三)、goto语句goto语句是一种无条件转移语句,与BASIC中的goto语句相似。goto语句的使用格式为:goto标号;其中标号是TurboC2.0中一个有效的标识符,这个标识符加上一个:一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号既然是一个

5、标识符,也就要满足标识符的命名规则。另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)if(i=51)gotoloop;/*如果i等于51,则跳出循环*/sn+=i;/*1+2+50*/loop:;printf(%dn,sn);可以看出,这儿的goto语句和break作用很类似。这儿的loop:

6、;printf(%dn,sn);也可以写成loop:printf(%dn,sn);intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)if(i=51)gotoloop;/*如果i等于51,则跳出本次循环*/sn+=i;/*1+2+50+52+100*/loop:;printf(%dn,sn);可以看出这儿的loop语句和continue的作用类似。但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。如:intmain(intargc,char*argv)inti,j,k;printf(ijkn);for(i=0;i2;i+)for(

7、j=0;j3;j+)for(k=0;k3;k+)if(k=2)gotoloop;printf(%d%d%dn,i,j,k);loop:;输出结果为:ijk000001如果不使用goto语句,而使用break,continue语句,应该这样intmain(intargc,char*argv)inti,j,k;printf(ijn);for(i=0;i2;i+)for(j=0;j3;j+)for(k=0;k3;k+)if(k=2)break;printf(%d%d%dn,i,j,k);if(k=2)break;if(k=2)break;输出结果为:ijk000001所以在同时跳出多层循环时,应该使

8、用goto语句。记住,所有的goto语句其实都是可以用break,continue代替的。下面举几个例子:1.求两个整数的最大公约数。例如10和15的最大公约数是5。分析:最大公约数一定小于等于最小的那个数一半,同时能被两数整除。intmain(intargc,char*argv)intnum1,num2,i,min;scanf(%d%d,&num1,&num2);min=num1二、循环语句(一)、for循环它的一般形式为:for(;)语句;初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。

9、这三个部分之间用;分开。例如:for(i=1;i10时,结束循环。注意:(1).for循环中语句可以为语句体,但要用和将参加循环的语句括起来。(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。(3).for循环可以有多层嵌套。例如:for(;)语句;for(i=1;i+=2)语句;for(j=5;)语句;这些for循环语句都是正确的。intmain(intargc,char*argv)in

10、ti,j;printf(ijn);for(i=0;i2;i+)for(j=0;j3;j+)printf(%d%dn,i,j);输出结果为:ij000102101112用for循环求1+2+100的和:intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)sn+=i;/*1+2+100*/printf(%dn,sn);从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为:while(条件)语句;while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。例如:#include

11、stdio.hintmain(intargc,char*argv)charc;c=0;/*初始化c*/while(c!=n)/*回车结束循环*/c=getche();/*带回显的从键盘接收字符*/上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c=n,条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。注意:(1).在while循环体内也允许空语句。例如:while(c=getche()!=n);这个循环直到键入回车为止。(2).可以有多层循环嵌套

12、。(3).语句可以是语句体,此时必须用和括起来。用while循环求1+2+100的和:intmain(intargc,char*argv)intsn=0,i=0;while(+i=100)sn+=i;/*求1+2+100*/printf(%dn,sn);(三)、do-while循环它的一般格式为:do语句块;while(条件);这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。同样当有许多语句参加循环时,要用和把它们括起来。用do-while循环求1+2+100的和:in

13、tmain(intargc,char*argv)intsn=0,i=1;dosn+=i;/*求1+2+100*/while(+i=100);printf(%dn,sn);从上面三个程序看出,使用for,while和do-while求解同样的问题,基本思路都差不多,只是在第一次计算时,注意初值。一、循环语句(一)、for循环它的一般形式为:for(;)语句;初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。例如:for(i=1;i10时,结束循环。注意:(1).for循环

14、中语句可以为语句体,但要用和将参加循环的语句括起来。(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。(3).for循环可以有多层嵌套。例如:for(;)语句;for(i=1;i+=2)语句;for(j=5;)语句;这些for循环语句都是正确的。intmain(intargc,char*argv)inti,j;printf(ijn);for(i=0;i2;i+)for(j=0;j3;j+)

15、printf(%d%dn,i,j);输出结果为:ij000102101112用for循环求1+2+100的和:intmain(intargc,char*argv)intsn=0,i;for(i=1;i=100;i+)sn+=i;/*1+2+100*/printf(%dn,sn);从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为:while(条件)语句;while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。例如:#includestdio.hintmain(intargc,char*argv)charc;c=0;/*

16、初始化c*/while(c!=n)/*回车结束循环*/c=getche();/*带回显的从键盘接收字符*/上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c=n,条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。注意:(1).在while循环体内也允许空语句。例如:while(c=getche()!=n);这个循环直到键入回车为止。(2).可以有多层循环嵌套。(3).语句可以是语句体,此时必须用和括起来。用while循环求1+2+100的和:intmain(intargc,char*argv)intsn=0,i=0;while(+i=100)sn+=i;/*求1+2+100*/printf(%dn,sn);(三)、do-while循环它的一般格式为:do语句块;while(条件);这个循环与while循环的不同在于:它先执行

温馨提示

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

评论

0/150

提交评论