格式:
switch (变量)
{
case 常量表达式1 :
代码块1
break;
case 常量表达式2 :
代码块2
break;
case 常量表达式3 :
代码块3
break;
........
default :
代码块n
break;
}
执行逻辑:
1. 进入switch..·case判断变量的结果,和case后的常量表达式判断,走满足的case后面的分支
2. 如果一个case后面没有break,执行完该case后会顺序向后执行下面的case/switch..·case语句,
3. default的作用,如果不关心其他分支,就写一个default,其他分支就走default
switch和后面括号内的内容是,选择的变量,case后面的常量表达式,就是switch后面的变量可能出现的情况。哪个case后面的常量是变量的结果,就执行哪个case后面的代码块。
注意事项
1. switch后面的变量只能是char/int
2. 如果不加break会顺序向后执行,叫做case击穿
3. case击穿可以根据使用场景的不用利用起来。
4. case的顺序,不会影响程序的执行
例:
int a = 0
scanf("%d",&a)
switch(a)
{
case 1:
printf("1\r\n");
break;
case 2:
printf("2\r\n");
break;
case 3:
printf("3\r\n");
break;
case 4:
printf("4\r\n");
break;
default: printf("其他数据");
}
输入a<< 1
输出>> 1
输入a<< 3
输出>> 3
输入a<< 5
输出>> 其他数据
格式:
while(条件)
{
代码块;
改变循环条件;
}
执行逻辑:
1. 先判断条件,如果条件为真,执行代码块内的语句
2. 当代码块执行完成后根据需要改变执行条件;
3. 当改变条件语句后,如果条件为真继续执行代码块,如果为假则循环结束
例:
int i = 0;
int cnt = 0;
while(i<5)//当i<5时执行while内的语句 当i=5时结束循环
{
cnt++;//记录循环执行次数
i++;//更新循环条件;
}
printf("cnt = %d",cnt);
结果>> 循环了5次
cnt = 5;
格式:
do
{
代码块;
改变循环条件;
}while(条件);
执行逻辑:
1. 先执行代码块
2. 当代码块执行完成后根据需要改变执行条件;
3. 执行完代码块后,判断循环条件,为真继续执行代码块,如果为假则循环结束
与while相比,do while内的代码块至少执行一次
例:
int i = 0;
int cnt = 0;
do
{ //先执行代码块
cnt++;//记录循环执行次数
i++;//更新循环条件;
}while(i<5);//当i<5时执行while内的语句 当i=5时结束循环
printf("cnt = %d",cnt);
结果>> 循环了5次
cnt = 5;
格式:
for(表达式1; 表达式2 ; 表达式3 )
{
代码块
}
执行逻辑:
1. 先执行表达式1,表达式1通常是循环变量初始化语句
2. 再执行表达式2,表达式2是for循环判断条件
3. 如果条件成立,执行循环体内的语句,再执行表达式3,表达式3就是循环变量的步长
4. 如果条件不成立,退出for循环
表达式1仅在初次进入循环时执行,表达式2在每次循环内的代码块执行完毕后都会执行
在for中的表达式1,表达式2,表达式3 都可以不输入,但两个 ; ; 必须输入,如:for(;; )
例:
int i = 0;//循环条件
int cnt = 0;//循环计数
for(i=0;i<5;i++)
{ //先执行代码块
cnt++;//记录循环执行次数
}
printf("cnt = %d",cnt);
结果>> 循环了5次
cnt = 5;
break只能用在循环和switch---case中
break用在循环中,表示退出本层循环
退出当前函数
跳出本次循环
#include
int main(void)
{
int i = 0;
for(i=0;i<5;i++)
{
printf("hello word!!!\r\n");
}
return 0;
}
输出结果>>
hello word!!!
hello word!!!
hello word!!!
hello word!!!
hello word!!!
#include
int main(void)
{
int i = 0;
for(i=1;i<=100;i++)
{
if(!(i%2)) printf("%d\r\n",i);
}
return 0;
}
输出结果>>
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
#include
int main(void)
{
int i = 0;
int sum = 0;
for(i=1;i<=100;i++)
{
sum+=i;
}
printf("sum = %d\r\n",sum);
return 0;
}
输出结果>>
sum = 5050
#include
#include
int main(void)
{
int i = 0;
for(i=100;i<=999;i++)
{
if(i==((pow(i/100,3)+pow((i/10)%10,3)+pow(i%10,3))))
{
printf("%d\r\n",i);
}
}
return 0;
}
输出结果>>
153
370
371
407
#include
int main(void)
{
int i = 1;
int sum = 0;
while(i<=100)
{
if(i%2)sum+=i;
i++;
}
printf("sum = %d\r\n",sum);
return 0;
}
输出结果>>
sum = 2500
#include
#include
int main(void)
{
int i = 1;//外循环
int in_num = 0;
scanf("%d",&in_num);
while(i<in_num)
{
if(in_num%i==0)
{
printf("%d\r\n",i);
}
i++;
}
return 0;
}
输入<<
输出结果>>
1
3
7
21
#include
#include
int main(void)
{
int i = 0;//外循环
int z = 0;//内循环
while(i<9)
{
z=0;
while(z<i+1)
{
printf("%d*%d=%-3d",z+1,i+1,(i+1)*(z+1));
z++;
}
printf("\r\n");
i++;
}
return 0;
}
输出结果>>
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
#include
int main(void)
{
int i = 1;
int z = 1;
int len = 0;
scanf("%d",&len);
while(i<len)
{
z=0;
while(z<i+1)
{
printf("*");
z++;
}
printf("\r\n");
i++;
}
return 0;
}
输入行数<< 7
输出结果>>
*
**
***
****
*****
******
*******