控制语句关键字(12个)
循环控制:for、do、while、break、continue
条件语句:if、else、goto
开关语句:switch、case、default
返回语句:return
循环控制:
for循环解构
do循环语句的循环体
while循环语句的循环条件
for循环和while循环:先进行条件判断,再决定是否执行循环,条件成立则进行一次循环,循环执行一次后再次进行条件判定,周而复始直到不满足条件循环结束。
do...while循环:先执行一遍循环里的代码块内容,再进行条件判定,周而复始直到不满足循环条件,循环结束。
for循环:
#include<stdio.h>
int main()
{
for (int i = 0/*第一部分*/; i < 10/*第二部分*/; i++/*第三部分*/) {
printf("%d\n", i);/*第四部分*/
}
pintf("for is over\n");/*第五部分*/
}
for循环执行过程为,首先进入循环执行第一部分内容,定义一个整形变量i = 0,进入第二部分进行条件判定,如果满足条件则执行第四部分内容,(如果不满足则跳出循环直接执行第五部分内容),执行完第四部分内容后进入第三部分进行循环条件变量刷新,之后在进入第二部分进行条件判定,周而复始直到循环结束。也可以这样写,结果是一样的
#include<stdio.h>
int main()
{
int i = 0;/*第一部分*/
for (; i < 10/*第二部分*/; i++/*第三部分*/) {
printf("%d\n", i);/*第四部分*/
}
pintf("for is over\n");/*第五部分*/
}
while循环就更简单了,执行过程为先进行flag条件标志判定,如果为真则进入while循环,(如果为假则结束while循环),执行while内部代码块,打印flag值,flag值减一,内部代码执行结束后再次进入while循环条件判定,这样周而复始直到while循环条件不满足,结束循环。
#include<stdio.h>
int main()
{
int flag = 10;
while(flag){
printf("%d\n",flag);
flag--;
}
printf("while is over");
}
do...while循环:过程为,首先执行代码块中的内容,代码块中内容执行结束后,进入while(条件判定)中进行条件判断,如果满足条件则进入代码块中再次运行一遍,(如果不满足则执行一次直接跳出循环),周而复始直到不满足为止结束循环。
#include<stdio.h>
int main()
{
int flag = 10;
do{
//代码块
printf("%d\n",flag);
flag--;
}while(flag/*条件判定*/);
printf("do...while is over");//循环结束
}
continue结束当前循环,开始下一轮循环
continue是用于终止本次循环的,也就是本次循环中continue后边的代码都不会再执行,而是直接跳转到循环语句的判断部分,进行下一次循环的入口判断。例如:
1首先进入判断while循环条件满足,进入while循环,接下来判断,如果第二部分内容满足,则执行第三部分内容,执行continue,然后直接跳转到第一部分,再次从头开始执行。
#include<stdio.h>
int main()
{
int flag = 5;
int i = 10;
while(flag/*第一部分*/)
{
i--;
if(i/*第二部分*/)
{
//第三部分
printf("第三部分:%d,%d\n",i,flag);
flag--;
Sleep(500);//延时函数,更好查看运行过程
continue;
}
//第四部分
printf("第四部分:%d,%d\n",i,flag);
}
printf("while is over\n");
}
2首先进入for循环,然后如果第二部分条件满足,则执行第三部分内容,执行continue,之后直接跳转到第五部分,然后进行for循环条件判断,一系列操作,最终实现整个程序。
#include<stdio.h>
int main()
{
int a = 10;
int i = 5;
for(;a>0/*第一部分*/;a--/*第五部分*/)
{
i--;
if(i>0/*第二部分*/)
{
//第三部分
printf("第三部分:%d,%d\n",i,a);
Sleep(500);//延时函数,更好查看运行过程
continue;
}
//第四部分
printf("第四部分:%d,%d\n",i,a);
}
printf("while is over\n");
}
3首先执行do内部内容,判断第一部分条件是否满足,满足执行第二部分内容,执行continue,然后直接跳转到第四部分,这系列过程。
do{
if(/*第一部分*/)
{
//第二部分
continue;
}
//第三部分
}while(/*第四部分*/);
上述三个例子很好的可以得出结论,continue是用于终止本次循环的,也就是本次循环中continue后边的代码都不会再执行,而是直接跳转到循环语句的判断部分,进行下一次循环的入口判断。
switch开关语句;case开关语句分支;default开关语句中的“其它”分支,可以不使用
break跳出当前循环或switch结构
switch case组合,
switch(整形变量/常量/整形表达式){
case 整形常量1:
//代码
break;
case 整形常量2:
//代码
break;
case 整形常量3:
//代码
break;
default:
break;
}
case完成判断功能,break完成分支功能,default完成处理异常情况。
case中不能定义变量,如果需要可以使用花括号{}括起来,在定义,或者调用函数,在函数中定义。
case后面只能是整形或字符型的常量或常量表达式。
default可以出现在任何位置,推荐放在结尾。
if 条件语句;else条件语句分支结构
if else就不过多介绍了,下面代码用到if else 、goto,(自己瞎想的一段代码)
#include<stdio.h>
int main()
{
int i = 0;
while (1)
{
if (i <= 10)
{
Sleep(500);
i++;
printf("if:%d\n", i);
}
else
{
Sleep(500);
i++;
printf("else:%d\n", i);
if (i > 20)
goto end;
}
}
end:
printf("if..else is over");
goto无条件跳转语句
直接可以跳转到goto后面的标签处,往后执行(标签也可以在goto前面,这样就实现了死循环)
goto FLAG;
.
.
.
.
FLAG
.
.
.
.
return 子程序返回语句,可带参数也可以不带参数
#include<stdio.h>
#include<windows.h>
int show(int x)
{
return ++x;
}
int main()
{
int i = 0;
i = show(i);
printf("%d\n",i);
system("pause");//Windows停屏
return 0;
}
//结果为1