while、do-while、for、goto一般只是跳转程序执行的流程,严格意义上,goto算不上循环。
1、循环的嵌套
一个循环体内又包含另外一个完整的循环体结构,称为循环的嵌套,也就是循环套循环。
int i,j,k;
for(i=1;i<=9;i++) //循环变量取值范围 = 1...9;
{
for(j=1;j<=i;j++) //循环变量取值范围j = 1...i;
{
k=i*j;
printf("%d*%d=%d\n",i,j,k);
}
}
printf("\n");
2、几种循环语句的比较
goto\while\do-while\for
a)、多数情况下,这些
循环之间可以相互代替,但是
不提倡使用
goto循环,因为goto循环
破坏了结构化程序设计,增加了程序的复杂性。goto可以说不叫循环,是一个
具有跳转功能的语句。
b)、while循环和for循环,是
先判断表达式的值,
后执行语句。而do-while循环是
先执行语句,
后判断表达式的值,所以do-while循环体内的一系列语句至少被执行一次。
c)、对while,do-while,for这三种循环,可以用break语句跳出循环,用continue语句结束本次循环。对于goto语句和if语句构成的循环,不能用break和continue语句进行控制。
3、break语句
switch(k)
{
case 1:
............
break; //这里表示跳出switch语句
case 2:
............
break;
default:
.............
break;
}
break还可以用三种循环结构:while,do-while,for;
用于跳出循环体,就是
提前结束循环,接着
执行循环后面的语句。
例题:计算1+2+。。。+100的值,和应该是5050,但是当和的值达到4000时,退出循环。
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
if(sum>=4000)
{
break; //跳出循环
}
}
printf("sum=%d\n",sum);
printf("i=%d\n",i);
切记:
break语句
不能用于循环语句和switch语句
之外的任何地方。并且break语句出现在switch中的时候,
是用于跳出switch语句,而不是跳出循环。
break语句
只能跳出break语句
所在的( 包着该break语句的循环语句
)这层循环
。
例如:
int i,j,k;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
k=i*j;
printf("%d*%d=%d\n",i,j,k);
break; //这里跳出循环跳到 printf("\n");
}
printf("\n");
break; //跳出了外面的循环,跳到printf("出来了\n");
}
printf("出来了\n");
4、continue语句
continue只用在三种循环
while,
do-while,
for 结构的语句体中,
不能用于switch。
continue的作用:
结束
本
次循环,跳过循环体中 下面尚未执行的语句,接着进行下一次是否执行循环的判断(而是判断下次循环是否执行)。
continue语句和break语句的区别:
continue语句
只结束
本次循环,
而不是终止整个循环的执行,而break语句是结束整个循环的执行,跳转到整个循环后边的语句去执行。
演示continue
把1到100之间的不能被3整除的数字输出
int i;
for(i=1;i<=100;i++)
{
if(i%3==0) //能被3整除
continue;
//能够走下来肯定不满足 if(i%3==0) 也就是不能被3整除的数字会使流程走下来
printf("%d ",i);
}