循环语句和循环语句中的break,continue:
本节主要讲的是while,do...while,for循环和if,switch分支结构。若有总结不恰当的地方欢迎指正。
顺带介绍一下循环结构中的break,continue。
-
while语句
//while的语法结构:
while(条件语句)
循环语句;
while语句在程序中的运用,例:while循环实现1到10的打印输出:
//打印输出1到10
#include <stdio.h>
#include<windows.h>
int main()
{
int i = 1;
while (i<=10)
{
printf("%d\n", i);
i++;
}
system("pause");
return 0;
}
while中的break语句:思考一下下面这个程序的输出结果
#include <stdio.h>
#include<windows.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;//跳出循环
printf("%d\n", i);
i++;
}
system("pause");
return 0;
}
答案是:1,2,3,4 在循环中只要遇到break,就直接跳出循环,终止循环
while循环中的continue:思考一下下面这个程序的输出结果
#include <stdio.h>
#include<windows.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d\n", i);
i++;
}
system("pause");
return 0;
答案:1,2,3,4,5,5,,, continue用于停止本此循环,所以当i=5时,continue结束本次循环之后直接转跳到while判定,然后再一次执行if语句,i=5,此时程序就陷入了死循环,那这个死循环可以被解决吗?答案坑定是可以的,只需要这样写就可以了:
while (i <10)
{i++;
if (i == 5)
continue;
printf("%d\n", i); 输出结果:1,2,3,4,6,7,8,9,10
-
do .....while语句
do
循环体语句
while(表达式)//执行循环体,后执行表达式,所以说do...while循环至少循环一次
do....while语句实现1到10的打印:
//打印输出1到10
#include <stdio.h>
#include<windows.h>
int main()
{
int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 10);
system("pause");
return 0;
}
do...while循环中的break和continue
思考下面程序的运行结果:
#include<stdio.h>
#include<windows.h>
int main()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d\n", i);
i++;
} while(i<=10);
system("pause");
}
结果为1,2,3,4 遇到break,跳出循环,循环结束,输出结果。
continue 例:分析下面程序的输出结果:
#include<stdio.h>
#include<windows.h>
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d\n", i);
i++;
} while(i<=10);
system("pause");
}
答案为1,2,3,4,5 ,5......因为当=5时,循环遇到continue,结束本次循环,然后执行条件判断,5<10条件满足, 继续执行下一次的循环,此时i还是等于5所以就形成了死循环,若是想将5后面的数字继续输出怎末办呢,方法和while中的一样只需要把条件更新语句(i++)提到if语句之前就可以了。
-
for语句
for(表达式1;表达式2;表达式3)
for循环打印1-10
#include<stdio.h>
#include<windows.h>
int main()
{
for (int i = 1; i<=10; i++)
{
printf("%d\n", i);
}
system("pause");
return 0;
}
for循环中的break和continue
思考一下下面程序的输出结果:
#include<stdio.h>
#include<windows.h>
int main()
{
for (int i = 1; i<=10; i++)
{
if (5 == i)
break;
printf("%d\n", i);
}
system("pause");
return 0;
}
输出结果为1,2,3,4 循环中遇到break,就结束循环,输出结果
思考一下下面程序的输出结果:
#include<stdio.h>
#include<windows.h>
int main()
{
for (int i = 1; i<=10; i++)
{
if (5 == i)
continue;
printf("%d\n", i);
}
system("pause");
return 0;
}
输出结果为:1,2,3,4,6,7,8,9,10 continue结束本次循环,之后跳转到了条件更新(i++),不会像前两种循环一样陷入死循环。
- 逗号表达式
用多个逗号隔开的表达式,叫做都好表达式。
逗号表达式的特性是:1,从左向右都会被执行。2,表达式的结果以最后一个表达式的结果为准
思考一下下面这个程序的运行结果:
#include<stdio.h>
#include<windows.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
printf("%d\n%d\n", i, k);
system("pause");
return 0;
}
答案是0,0 因为k=0,所以逗号表达式的值为假,跳出循环,所以k=0,i=0。