一、流程结构
C语言提供3种流程结构,分别是:
顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
如下图所示:
二、选择结构 – if
1. 简单使用
1> if (表达式) 语句1;
<strong>if(score>50)
xxx;
</strong>
2> if(表达式) 语句1; else 语句2;
<strong>f(score >50)
xxx;
else
xxx;
</strong>
3> if(表达式) { }
<strong>if(score >50)
{
xxx;
}
else
{
xxx;
}
</strong>
4> if -else if-else
if(a==0)
{
xxx;
}
else if (a>0)
{
xxx;
}
… …
else
{
xxx;
}
特点:只有一个括号会被执行
2. 使用注意
1> 不要在if的小括号后面添加分号
2> 像a==0这样的表达式,最好写成0==a,若你误写成0=a,编译器会直接报错的
3> 直接写个if(a)是可以的,C语言默认所有大于0的值都为真
三、选择结构2-switch语句
1. 基本形式
switch(整型表达式)
{
case 数值1:
语句1;
break;
case 数值2:
语句2;
break;
... ...
case 数值n:
语句n;
break;
default :
语句n+1;
break;
2. 举例
int a = 10;
switch (a) {
case 0:
printf("这是一个0");
break;
case 5:
printf("这是一个5");
break;
case 10:
printf("这是一个10");
break;
default:
printf("什么也不是");
break;
}
3. break
1> break的作用
break关键字的作用是退出整个switch语句。默认的格式中,每个case后面都有个break,因此执行完case中的语句后,就会退出switch语句。
2> break的基本使用情况
如果某个case后面没有break,意味着执行完这个case中的语句后,会按顺序执行后面所有case和default中的语句,直到遇到break为止
3> break的特例
在某些时候,我们确实没有必要在每一个case后面添加break。下面举一个例子:判断分数的优良中差等级(100分满分)。
int score = 77;
switch (score/10) {
case 10:
case 9:
printf("优秀");
break;
case 8:
printf("良好");
break;
case 7:
case 6:
printf("中等");
break;
default:
printf("差劲");
break;
}
分析:
当score的范围是90~100,score/10的值为10或9时,就会执行第6行代码,然后退出switch语句;
当score的范围是80~89,score/10的值为8时,就会执行第10行代码,然后退出switch语句;
当score的范围是60~79,score/10的值为7或6时,就会执行第15行代码,然后退出switch语句;
当score的范围并不是60~100,score/10的值并不在6~10范围内时,就会执行第19行代码,然后退出switch语句;
score的值是77,所以score/10的值是7,输出结果:中等
4. 在case中定义变量
有时候,我们可能会想在case中定义一些变量,这个时候,就必须用大括号{}括住case中的所有语句。
5. if和switch的对比
1> 其实if和swift在很多情况下可以互换
2> 在项目实战中,if用得比较多,比较灵活,switch只能某个单值,用的比较少
四、循环结构1-while循环
1. 形式
while ( 条件 )
{
语句1;
语句2;
....
}
2.举例
在屏幕上重复输出10次Hello World,每输出一次的换行。
int count = 0;
while ( count < 10 )
{
printf("Hello World\n");
count++;
}
3.注意
仔细看下面代码:
int count = 0;
while ( count < 10 );
{
printf("Hello World\n");
count++;
}
分析:
俗话说细节决定成败,仔细看,while后面不小心加了个分号,就变成死循环了,而且这种错误还不容易调试,所以,要注意!
五、循环结构2-do while循环
形式如下:
do {
语句1;
语句2;
...
} while (条件);
使用do-while结构时,记得在最后加上一个分号;
不管while中的条件是否成立,循环体中的语句至少会被执行一遍;
其实do-while跟while是同一个循环,几乎所有情况他们都等价,只有一种情况,就是当条件完全不满足时,do-while会执行一次循环体,while不会执行,所以会导致结果不同,除了这个没其他特例了,剩下的就没什么好说的了,我一般不用这个;
六、循环结构3-for循环
for循环很常用,个人爱好。
1.形式
for (语句1; 条件; 语句2) {
语句3;
语句4;
...
}
执行过程:
先执行语句1一次,然后判断条件,条件满足执行循环体,然后执行语句2,再判断条件,再执行循环体,再执行语句2,如此循环。
2.举例
for (int i = 0; i<5; i++)
{
printf("%d ", i);
}
3.补充
如果for循环的初始化语句和循环一次后执行的语句是由多条语句组成的,就用逗号,隔开
for (int x = 0, y =0; x<3; x++, y+=2)
{
printf("x=%d, y=%d \n", x, y);
}
4. for循环嵌套
for循环是可以嵌套的,而且很常用。
#include <stdio.h>
int main()
{
for (int i = 1; i<=4; i++)
{
//printf("好友列表%d\n", i + 1);
printf("好友列表%d\n", i);
/*
printf(" 好友1\n");
printf(" 好友2\n");
printf(" 好友3\n");
printf(" 好友4\n");
printf(" 好友5\n");*/
for (int j = 1; j<=7; j++)
{
printf(" 好友%d\n", j);
}
}
return 0;
}
5. 注意
1> 最简单的死循环 for(;;);
2> for循环内部定义的变量,作用域只在内部,for结束就销毁,包括那个i
6. while循环和for循环的比较
1> while循环和for循环在任何情况下都可以互换
2> for循环的好处在于循环结束可以及时销毁变量
七、break和continue
1. break
1> 使用场合:switch\循环结构
2> 循环嵌套下的break
2. continue
1> 使用场合:循环结构
2> 循环嵌套下的continue