1for循环
for(表达式1; 表达式2; 表达式3)
循环语句;
说明:1为初始化 2为条件判断 3为调整部分
(初始化只进行一次,顺序为1 - 2(成立) - 循环语句 - 3 - 2(成立) - 循环语句 - 3 - 2(不成立) - 循环结束)
那么,看一个最基本的代码
1for的基本使用
int main()
{
int i=0;
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
通过i sz 来控制打印数组
2for与continue的联动
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d\n", i);//此结果为1234678910
//具体可以讲讲它的流程,
}
return 0;
}
一开始进入for循环 i=1为初始化也算是赋值;再判断i<=10为真,再执行if函数,判断i!=5所以continue不执行
然后打印i,最后进行调整i++,i此时为2,判断i<=10,又一次循环;一直循环,直到把4打印完后,此时进行i++,i=5
if的判断条件为真,执行continue,不打印,然后i又执行i++,此时i==6,不符合if的判断条件,所以最后结果为1234678910
3for循环可以不设条件
int main()
{
for (;;)
{
printf("hehe");//注意for的初始,判断,调整都可以被省略;但是如果判断条件被省略则判断
条件恒为真
//如果不是非常熟练不要省略,此结果为一直打印hehe
}
return 0;
}
4for的嵌套理解
int main()
{
int i = 0;
int a;
for (i = 1; i <= 10; i++)
{
for (a = 1; a <= 10; a++)
printf("hehe\n");
}
return 0;
}
//解释 此代码是从上往下运行的,只有当第二个for循环结束时,第一个for才会进入i++
//那么第二个for执行时固定10次循环,而i是有10次循环,所以10*10=100 一共循环了100次
int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
for (; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
猜猜看输出了几个hehe
解释:这个主要是没有加入初始值导致第一个for循环在第二次循环时;j = 11;所以第二个for循环直接结束,如果在第二个for循环加入初始值j = 0; 则结果为打印100次hehe。
5for循环可设立多个判断条件或多个初始条件
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
printf("hehe\n");
return 0;
}
//这里表明for可以用两个变量设置条件 &&在这里指的是且,只有两个条件都成立时,才为真
int main()
{
int i = 0;
int j = 0;
for (i = 0, j = 0; j = 0; i++, j++)
j++;
return 0;
}
此代码循环了0次值得注意的是 判断条件j=0 ,它的意义是假,所以不循环
6for循环练习
下面的代码是算n的阶乘
int main()
{
int i;
int n;
int ch = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)//这个是来算n的阶乘的,但可算的范围小。
{
ch = ch * i;
}
printf("ch=%d\n", ch);
return 0;
}
2while循环
1while循环的基本使用
while循环的使用与for循环大同小异,能够使用for循环实现的while也可以实现
while(表达式){语句}
这就是while循环的语法
同样使用while循环打印数组
int main ()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
while(i<10)
{
printf("%d ",arr[i++]);
}
return 0;
}
大家若是不熟悉i++请不要随意使用
前面没有说过break,接着看看
2break与while循环的使用
int main()
{
int i=5;
while(1)
{
if(i>200)
break;
else
i*=5;
}
printf("%d ",i);
return 0;
}
如果没有break while(1)就是一个死循环
break在for循环中同样适用
但是这里当我们的i>200是就会结束
最后的打印结果不就是625
3 do while循环
do
循环语句;
while(表达式);
举例
int main()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
} while (i < 10);
return 0;
}
它与while循环基本一样,while是先判断后执行,do while是先执行后判断
同switch for while 一样都可以break和continue结合
例如可以在printf上方加入if(i==5)
continue 结果:1234(死循环)
or if(i==5)
break 结果:1234(循环结束)
当然 do while循环不管条件如何一定会执行一次