C语言三种循环语句文档格式.docx
- 文档编号:14423383
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:31
- 大小:27.56KB
C语言三种循环语句文档格式.docx
《C语言三种循环语句文档格式.docx》由会员分享,可在线阅读,更多相关《C语言三种循环语句文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。
再重新判断,直到条件为假,即i>
10时,结束循环。
注意:
(1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。
(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;
不能缺省。
省略了初始化,表示不对循环控制变量赋初值。
省略了条件表达式,则不做其它处理时便成为死循环。
省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
(3).for循环可以有多层嵌套。
例如:
for(;
)语句;
i+=2)语句;
for(j=5;
这些for循环语句都是正确的。
main()
{
inti,j;
printf(ij\n);
for(i=0;
2;
for(j=0;
j<
3;
j++)
printf(%d%d\n,i,j);
}
输出结果为:
ij
00
01
02
10
11
12
用for循环求1+2+……+100的和:
main()
intsn=0,i;
=100;
sn+=i;
/*1+2+……+100*/
printf(%d\n,sn);
}
从程序可以看出,使用循环语句可以大大简化代码。
(二)、while循环它的一般形式为:
while(条件)
while循环表示当条件为真时,便执行语句。
直到条件为假才结束循环。
并继续执行循环程序外的后续语句。
#includestdio.h
{
charc;
c='
\0'
/*初始化c*/
while(c!
='
\n'
)/*回车结束循环*/
c=getche();
/*带回显的从键盘接收字符*/
上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;
一旦输入回车,则c='
,条件为假,循环便告结束。
与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。
(1).在while循环体内也允许空语句。
while((c=getche())!
);
这个循环直到键入回车为止。
(2).可以有多层循环嵌套。
(3).语句可以是语句体,此时必须用{和}括起来。
用while循环求1+2+……+100的和:
intsn=0,i=0;
while(++i<
=100)
/*求1+2+……+100*/
(三)、do--while循环它的一般格式为:
do
语句块;
while(条件);
这个循环与while循环的不同在于:
它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;
如果为假,则终止循环。
因此,do-while循环至少要执行一次循环语句。
同样当有许多语句参加循环时,要用{和}把它们括起来。
用do--while循环求1+2+……+100的和:
intsn=0,i=1;
=100);
从上面三个程序看出,使用for,while和do--while求解同样的问题,基本思路都差不多,只是在第一次计算时,注意初值。
二、循环控制
(一)、break语句
break语句通常用在循环语句和开关语句中。
当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;
如果没有break语句,则将成为一个死循环而无法退出。
break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。
即满足条件时便跳出循环。
if(i==51)break;
/*如果i等于51,则跳出循环*/
/*1+2+……+50*/
可以看出,最终的结果是1+2+……+50。
因为在i等于51的时候,就跳出循环了。
自己写写怎样在while和do--while循环中增加break语句。
1.break语句对if-else的条件语句不起作用。
2.在多层循环中,一个break语句只向外跳一层。
if(j==2)break;
当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。
(二)、continue语句
continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。
continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
if(i==51)continue;
/*如果i等于51,则结束本次循环*/
/*1+2+……+50+52+……+100*/
从程序中可以看出,continue语句只是当前的值没有执行,也就是说当前的值跳过去了,接着执行下次循环。
if(j==1)continue;
(三)、goto语句
goto语句是一种无条件转移语句,与BASIC中的goto语句相似。
goto语句的使用格式为:
goto标号;
其中标号是TurboC2.0中一个有效的标识符,这个标识符加上一个:
一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。
标号既然是一个标识符,也就要满足标识符的命名规则。
另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。
通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。
goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。
if(i==51)gotoloop;
loop:
;
可以看出,这儿的goto语句和break作用很类似。
这儿的loop:
也可以写成loop:
printf(%d\n,sn);
/*如果i等于51,则跳出本次循环*/
可以看出这儿的loop语句和continue的作用类似。
但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。
如:
inti,j,k;
printf(ijk\n);
for(k=0;
k<
k++)
if(k==2)gotoloop;
printf(%d%d%d\n,i,j,k);
ijk
000
001
如果不使用goto语句,而使用break,continue语句,应该这样
if(k==2)break;
所以在同时跳出多层循环时,应该使用goto语句。
记住,所有的goto语句其实都是可以用break,continue代替的。
下面举几个例子:
1.求两个整数的最大公约数。
例如10和15的最大公约数是5。
分析:
最大公约数一定小于等于最小的那个数一半,同时能被两数整除。
intnum1,num2,i,min;
scanf(%d%d,&
num1,&
num2);
min=num1
for(i=min/2;
i>
0;
i--)
if(num1%i==0&
&
num2%i==0)break;
printf(最大公约数为%d\n,i);
2.求1!
+2!
+……+n!
(n<
10)
intn,i;
longtemp=1,sn=0;
/*从9!
以后,所得的值就超过了int范围*/
scanf(%d,&
n);
=n;
temp*=i;
sn+=temp;
/*如果没有这一步,求的就是n!
*/
printf(%ld\n,sn);
那么想想,如果求1!
+3!
+5!
应该怎么办?
3.判断一个整数是不是素数(素数就是只能被本身和1整除的数)。
#includemath.h
intnum,i,flag=0;
num);
for(i=2;
i
flag=0;
/*标志变量复位*/
if(num%i==0)
flag=1;
break;
if(flag==0)printf(是素数\n);
elseprintf(不是素数\n);
可以说,在所有的C语言书上,都有判断素数的例题。
它的编程思想是:
把一个变量作为标志变量,用来标志是不是素数;
循环体是从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 语句