黑马程序员———C语言|黑马程序员———C语言 分支语句和循环语句
------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------
一 分支语句:
1.if语句
格式:if(表达式,常量,变量){
语句块1;
}
原理:先计算小括号中表达式的值,为真(1)会执行大括号中的语句,为假(0)不会执行大括号中的语句。
2.if...else...分支语句
格式:if(表达式){
表达式为真,执行此处代码
}else{
表达式为假,执行此处代码
}
注:不管表达式为真为假,都会执行一个分支。
3.if语句的嵌套
格式:if(表达式1){
表达式1为真,执行此处代码
}else{
表达式1为假,执行此处代码
if(表达式2){
表达式1为假,表达式2为真,执行语句块2;
}else{
表达式1为假,表达式2为假,执行语句块3;
}
}
4.if语句的高级用法
if(表达式1){
如果表达式1为真,则执行语句块1,后面的语句块都不执行了
}else if(表达式2){
如果表达式1为假,表达式2为真,则执行语句块2,后面的语句块都不执行了
}else if(表达式3){
如果表达式1,表达式2为假,表达式3为真,则执行语句块3,后面的语句块都不执行了
}else{
如果表达式1,2,3都为假,会执行此处代码块
}
5.if语句的使用注意
1)if(a==3);
这是空语句,什么也没有干。
2)如果if之后的代码块,只有一句话,则可以省略大括号。也就是说,if条件语句如果没有大括号,只会影响紧挨着if的一句话。
3)永真式和永假性
if(1)大括号中永远执行
if(0)大括号中永远不会执行
4)if语句结合return语句 在一个函数中,return之后的语句都不会执行。
int a=3;
if(a>3)
return 0;
printf("a>3\n");
此处虽然位于return语句之后,但然会执行,因为a>3是假的,相当于没有return这句话。
5)if的作用域
if(a==3){
int num=10;
}
printf("%d",num);
//此处会报错,因为是在代码块内部定义的变量
6)作用域的紊乱
if(a==3)
int num=10;
//定义了一个num,什么也没有做
printf("%d",num);
二 switch语句:也就是开关语句
1.格式:switch(表达式){
case常量表达式1:语句1;
case常量表达式2:语句2;
...
case常量表达式n:语句n;
default:语句n+1;
}
语义:计算表达式的值,逐个与后面常量表达式的值比较,当表达式的值与常量表达式的值相等,执行其后语句,不在进行判断,继续执行后面所有case后的语句,如果表达式的值与常量表达式的值都不相等,则执行后default的语句。
2.case语句的穿透:某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句,这就是case的穿透。
如何预防?在每一个case语句之后加上一个:break;
作用是结束switch语句。
3.if语句和switch语句的选择
分支比较多而且无穷尽或者进行大量列举时用if,分支数量不多,但是用if代码量比较大时,用switch。也可以嵌套使用。
4.使用注意:
1).表达式类型:可以放一个整型的变量(switch(num))
可以放一个整型常量(switch(10))
可以放一个返回值是整型的表达式(switch(5+5),num=5+5)
可以放一个转换为int类型的表达式(switch('a')或者switch('a')+('b'))其中字符可以转换成ascii码值。
2).case语句可以任意写多句,可加{},也可不加{}。
3).break语句可选择的,可以加,也可以不加。
5.case语句的注意事项:
1).格式:case 常量表达式:空格和表达式不能省略。
2).可以是常量 case 10:
3).只能是常量表达式 case 5+5:
4).default的位置可以任意放
5).case的传统也适用于default
6).如果default语句放到switch语句的最后,可以不加break,但是加在中间,不加break,也会发生穿透。所以必须加上break.
7).case后面不能是实数
8).case语句之后,默认的第一句话不能定义变量,非要定义,严格加上{},去掉{}的话,在第二句定义也是可以的
9).编译器的bug
三 循环语句
循环结构:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定条件叫循环条件,反复执行的程序段称为循环体。简单的来说,循环是一次又一次的执行相同的代码块。
分类:whiledo-whilefor
循环的构成:循环控制条件,循环体,能够让循环结束的语句(递增,递减,真,假)。
1.while循环
1) 格式:while(条件){
语句1;
语句2;
.....
}当前循环:当条件满足的时候,再去执行循环体。
2)使用方法:while中的条件一开始就不成立,那么循环体中的语句永远不会被执行。条件成立,就会执行大括号里面的内容。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环。
3)死循环:就是一直都执行循环体中的代码,不会退出。
4)产生随机数:导入头文件stdlib.h,然后调用随机函数,产生随机数。
arc4rand_uniform(n-m+1)+m
5)使用注意
a.死循环
while(-1){
printf{"死循环"};
}:只要条件不是0,就会一直执行下去,因为任何数值都有真假性,除了0,不管正负数都是真。
b.当一个变量与常量进行==或者!=时,通常把常量写在前面。while(3==num){
}
c.while后面只有一条语句,{}可以省略,但是while()后面不可以直接加分号;
要是加了,就是死循环,下面的都不执行了。
d.while大括号{}中定义的变量不可以在代码块外边访问。
e.作用域的紊乱。如同if
f.while(1)简单死循环
2.do...while 循环
do{
语句1;
语句2;
....
}while(条件);
直到型循环:先执行循环体,然后判断条件,条件成立,在执行循环体中的语句,在判断条件,重复上述,直到条件为假就结束。
do...while特点:不管条件是否成立,循环体中的语句至少会被执行一遍。
语句结束之后,必须有“;
”
while和do...while的对比
a.当循环控制条件第一次的判断不为假时,while和do...while循环体执行的次数相同。
b.当循环控制条件第一次的判断为假时,while循环的循环体执行0次。do...while循环体执行1次。
3.for循环
1)格式:for(表达式1;
表达式2;
表达式3){
语句;
}
2)构成循环的条件:控制条件 循环体 能够让控制条件为假的操作
3)执行流程:先求解表达式1定义一个变量
在判断表达式2,为真(非0)则执行{}里面的内容,然后在执行表达式3,若为假,结束循环,
再从表达式2执行起,为真(非0)则执行{}里面的内容,然后在执行表达式3,若为假,结束循环。
注意:其中表达式1只会执行一次,当条件不满足时,循环就结束。
4)for循环的其他形式:省略形式
第一种
int i=0
for(;
i<5;
i++){
printf("");
}
第二种
int i=0
for(;
i<5;
){
printf("");
i++;
}
第三种
int i=0
for(;
;
){
if(i<5){
printf("");
i++;
}else{
break;
}
}
5)for循环可以嵌套嵌套两层,如以下打印图形:
for (int i=0;
i<5;
i++) {
for (int j=0;
j<5;
j++) {
printf("*\t");
}
printf("\n");
}
【黑马程序员———C语言|黑马程序员———C语言 分支语句和循环语句】
推荐阅读
- ANDROID L——Material Design具体解释(主题和布局)
- 移动端app性能测试——monkey
- Android开发笔记——View
- 【5期】彻底搞懂JS原型继承之——函数对象和普通对象
- Android笔记——Activity中的回传数据案例(装备选择)
- Android——点击对话框上button不关闭对话框
- Android从无知到有知——NO.5
- Android驱动之 Linux Input子系统之TP——A/B(Slot)协议
- Word 2010 自定义快捷键设置——符号_Word专区
- 浩哥解析MyBatis源码——binding绑定模块之MapperRegisty