1、介绍
1)用goto语句和if语句构成循环;
2)用while语句;
3)用do-while语句;
4)用for语句;
2、goto语句
goto语句是一种无条件转移语句, 与BASIC中的goto语句相似。goto 语句的使用格式为:
goto 语句标号;
用goto语句和if语句构成循环
void main()
{
int i,sum=0;
i=1;
loop: if (i<=100)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
}
3、while语句
用while语句求
void main()
{
int i, sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
};
printf("%d\n",sum);
}
#include <stdio.h>
void main()
{
int n=0;
printf("input a string:\n");
while( getchar()!='\n' )
{
n++;
};
printf("%d",n);
}
注意点:
1) while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
2) 循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。
4、do-while语句
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。
#include<stdio.h>
int main()
{
int i,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("%d\n",sum);
system("PAUSE");
return 0;
}
4、for语句
形式:for(表达式1;表达式2;表达式3) 语句
它的执行过程如下:
1) 先求解表达式1。
2) 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
3) 求解表达式3。
4) 转回上面第2)步继续执行。
5) 循环结束,执行for语句下面的一个语句。
可以理解为:for(循环变量赋初值;循环条件;循环变量增量) 语句
注意点:
1) for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。
2)省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。
3)省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。
4)省略了“表达式3(循环变量增量)”, 则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
5)省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。
6) 3个表达式都可以省略。
例如:for(;;)语句
相当于: while(1)语句
7) 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。
例如: for (sum=0;i<=100;i++)
sum=sum+i;
8)表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。
for(sum=0,i=1; i<=100; i++) sum=sum+i;
或: for(i=0,j=100; i<=100; i++,j--) k=i+j;
9)表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
#include<stdio.h>
int main()
{
int i, j;
for ( i=1; i < 7; i++)
{
printf("\n");
for ( j=1; j <= i; j++ )
{
putchar('*');
}
}
system("PAUSE");
return 0;
}
4、几种循环语句的对比
(1) 四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。
(2) 在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++,或i=i+1等)。
for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强凡用while循环能完成的,用for循环都能实现。
(3) 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成而for语句可以在表达式1中实现循环变量的初始化。
(4)while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环(break语句和continue语句见下节)。而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。
5、break和continue语句
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句
一般形式:break;
break语句不能用于循环语句和switch语句之外的任何其他语句中。
注意:
1) break语句对if-else的条件语句不起作用。
2) 在多层循环中, 一个break语句只向外跳一层。
作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
一般形式: continue;
continue语句只结束本次循环,而不是终止整个循环的执行。
break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。