for循环基本格式
for(表达式1;表达式2;表达式3)
for(初始化 ; 判断 ; 调整)
int main()
{
int i = 0;
//for(表达式1;表达式2;表达式3)
//for(初始化 ; 判断 ; 调整)
for (i = 1; i <= 10; i++)
{
if (i == 5)
break; //i=5时直接跳出,不打印5,打印结果为1,2,3,4
//continue; //i=5时,不执行下面的代码,就不会打印5,直接跳到调整部分(i++),此时i=6,再到判断部分(i <= 10),继续执行,所以打印结果为1,2,3,4,6,7,8,9,10
printf("%d\n", i);
}
return 0;
}
易错点
int main()
{
int i = 0;
for(i=1;i<10;i++)
//不可以在for循环体内修改循环变量,防止for循环失去控制
if (i = 5) //此时i被赋值成5,就会出错
{
printf("haha\n");
printf("hehe\n");
}
return 0;
}
for函数变种1
int main()
{
for (;;) //for循环的初始化,调整,判断,都可以省略,如果判断部分被省略,那判断条件就是恒为正
//如果不熟练,建议不要省略
{
printf("hehe\n");
}
return 0;
}
随意省略会出现问题
未省略
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
printf("hehe\n");
}
}//此时打印100个hehereturn 0;
}
//若把初始化i=0,j=0省略掉int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
for (; j < 10; j++) //在内循环中,在跳出内循环时i=10,然后跳回外循环,往下执行
//因为内循环的初始化被省略,所以i还是10,没有被重置,就会直接跳出内循环
//因此不能随便省略
{
printf("hehe\n");
}
}//此时打印10个hehe
return 0;
}
for函数变种2
在for函数条件可以是多个变量
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++) //前置++ 和后置++都是加1
//x < 2 && y < 5 同时成立是才继续执行,否则停止
{
printf("hehe\n");
}
return 0;
}
易错点
请问这个代码循环多少次
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)//判断部分k=0,是赋值,而不是判断,所以判断部分始终为假,进不去循环,所以为0
k++;
return 0;
}//结果为0次
do while循环
特点是一定会执行一次,因为是先执行,判断部分在后面
int main()
{
int i = 1;
do
{
if (i == 5) //执行阶段
//break;//打印1,2,3,4
continue; //i=5时,跳出执行阶段,不执行i++,直接到判断部分,i就会一直等于5,进入死循环,打印1,2,3,4
printf("%d\n", i); //一个函数下有多个printf语句必须用{}括起来
i++;
}
while (i <= 10); //判断部分
return 0;
}