switch
多分支情况
switch(整形表达式)
{
case 整形常量表达式1: //5
语句块1;
break;
case 整形常量表达式2: //6
语句块2;
break;
case 整形常量表达式3: //7
语句块3;
break;
default:
语句块n;
}
整形表达式 计算下来的结果 ,会和case后面的 整形常量表达式 进行等值比较。 如果值相等则该 case 对应的语句块,就会被执行 ,直到遇到break。
break; 停止,断开。在switch 中,执行遇到break ,意味 switch 分支结束。
default ,可以选。 如果有的话,switch 在匹配的过程中,如果case 都没有匹配成功,则执行default
对应的语句。 一般放在最后。
1) switch 后面必须是一个整形表达式
2) case 后面 整形的常量 ,不能是变量,或表达式
3)switch 的整形表达式 和 case 后面 整形的常量 ,做等值比较。 如果相等执行对应的case。 直到break 停止。 如果都没有匹配中,执行default;
流程框图

循环控制
代码执行的时候,有多次执行同一段代码需求。
事先执行需要运行几次 for
未知执行次数的话 while
循环三要素:
1) 循环控制变量 需要初始化
2) 需要检测循环变量 ,是否继续循环
3)循环中,需要包含控制变量 变化的语句 ++,--
while
1.while的使用
while(表达式)
{
循环体;
}
表达式 值为一个逻辑值 1 ture 0 fasle
循环体; 代码会执行多次
1 对表达式求值 ,如果为 1(真) ,则执行循环体 。否则 ,循环结束。
2 执行循环体 循环的代码
3 执行 1
循环体 中,需要包含 使用循环慢慢趋势于结束的变量(循环体控制变量,++,--)
while(表达式)后 不要加分号。

2.死循环
//循环会一直运行
while(1)
{
循环体;
}
for
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1 ,变量初始化,或者循环运行起来前,需要初始化的变量
表达式2 ,决定循环是否会继续运行。如果为真,循环执行,否则循环停止
表达式3 ,对循环控制变量,进行改变的地方(++,--)
执行的流程
1.执行表达式1 ,对控制变量初始化 。 只会走一次。
2.对表达式2求值,如果为真,执行循环体。否则结束
3.执行循环体代码
4.执行表达式3, 对控制变量 ++,--
5.跳 第2步
死循环形式
for(;;) 分号不可以省略
{
循环体;
}
双层循环
int i =0;
int j = 0 ;
for(j=0;j<3;j++) // 外层
{
for(i=0;i<5;i++)// 内层循环
{
循环体;
}
}
外层循环 j++ 一次 ,则内层循环 执行5次
9 * 9 乘法表
int i = 0 ;
int j = 0 ;
for(j = 1 ;j <=9;j++)// row
{
for(i=1;i<=j;i++)
{
printf("%d*%d=%d ",i,j,j*i);
}
// printf("\n");
puts(" ");
}
goto
无条件调整 。
goto 只能在 同一个函数内部 调整。 goto 相当与 汇编中的 JMP指令。
在应用层程序编程中,禁止使用。
在linux 内核编程中, 错误处理 ,用的多。
int main()
{
int i = 0 ;
int sum = 0;
//标号
loop:
sum+=i;
i++;
if(i<=10)
{
goto loop;
}
else
{
//goto end
}
printf("sum is %d\n",sum);
end:
return 0;
}
do ... while()
do
{
循环体;
}while(表达式);
循环体至少执行一次。 while() 后面的分号,不可省略。否则语法报错。
1 执行循环体
2 表达式求值 ,如果真,则执行循环体。否则,循环终止。
int main()
{
int i = 0 ;
int sum = 0 ;
do
{
sum+=i;
i++;
}while(i<=10);
printf("sum is %d\n",sum);
}

循环辅助控制
continue; //继续, 跳过本次循环
1 跳过本次循环
2 在循环过程中,需要屏蔽其中某几次循环
for(i=0;i<10;i++)
{
if(3==i || 5==i || 7==i )
{
continue;// 在循环过程中,i如果是3,5,7 ,直接执行下一次循环
}
printf("i is %d\n",i);
}
break;//跳出循环,提前结束循环
1 跳出当前循环或switch
2 如果不希望循环继续,调用break
for(i=1;i<10;i++)
{
if(3==i || 5==i || 7==i )
{
break; //提前结束循环
}
printf("i is %d\n",i);
}
printf("end...\n");

1095

被折叠的 条评论
为什么被折叠?



