1、 这节讲解分支和循环大家注意了,这是重点:分支就是说选择执行某些语句,而循环就是不停地工作,直到完成这次任务。注意语法规则,这是最后一节了。本章算是结束了,后续我会发出本章总结和大量练习题。 分支语句 1.if 语句 if 语句允许程序通过测试表达式的值从两种选项中选择一种。If语句的最简单格式如下: 用法①:if(表达式)语句 描述:如果表达式为“真”,则执行语句;否则执行if后面的语句。 例子: if(a>1) b=10; 用法②:if(表达式)
2、 语句1 else 语句2 描述:如果表达式的结果为“真”,则执行语句1;否则执行语句2。 例子:if (a>1) b=10; else b=100; 用法③:if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语
3、句3 。 。 。 。 else if(表达式m) 语句m else 语句n 描述:如果表达式1的结果为“真”,则执行语句1,退出if语句;否则去判断表达式2, 如果表达式2的结果为“真”,则执行语句2,退出if语
4、句;否则去判断表达式3, 如果表达式3的结果为“真”,则执行语句3,退出if语句;否则去判断表达式3后面的表达式, 。。。。。。。 如果表达式m的结果为“真”,则执行语句m,退出if语句; 否则去执行语句n。 例子:if (a>1) b=10; else if(a>2) b=20;
5、 else if(a>3) b=30; else if(a>4) b=40; else b=100; if语句的嵌套 if语句的嵌套是指if语句中又包含了一个或多个if语句 main() { float score; 读取你的分数: scanf("scor
6、e=%lf",&score); if(score<=100&&score>=0) else if(score>=90&&score<=100) printf("A"); else if(score>=80&&score<=89) printf("B"); else if(score>=70&&score<=79) printf("C"); else if(score>=60&&score<=69) printf("D"); else printf("E"); } 2. switch语句 switch语句可以产生具有多个分支的控制流程。它的格式是: switch
7、控制表达式) { case 常量表达式: 语句列表 case 常量表达式: 语句列表 ... default: 语句列表 } 例如以下程序根据传入的参数1~7分别打印Monday~Sunday: switch语句 如果传入的参数是2,则从case 2分支开始执行,先是打印相应的信息,然后遇到break语句,它的作用是跳出整个switch语句块。C语言规定各case分支的常量表达式必须互不相同,如果控制表达式不等于任何一个常量表达式,则从default分支开始执行,通常把default分支写在最后,但不是必须的。使用switch语句要注意几点: 1. case后面跟表
8、达式的必须是常量表达式,这个值和全局变量的初始值一样必须在编译时计算出来。 2. 浮点型不适合做精确比较,所以C语言规定case后面跟的必须是整型常量表达式。 3. 进入case后如果没有遇到break语句就会一直往下执行,后面其它case或default分支的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。通常每个case后面都要加上break语句,但有时会故意不加break来利用这个特性,例如: 缺break的switch语句 switch语句不是必不可缺的,显然可以用一组if ... else if ... else if ... else
9、 ...代替,但是一方面用switch语句会使代码更清晰,另一方面,有时候编译器会对switch语句进行整体优化,使它比等价的if/else语句所生成的指令效率更高。 循环语句 1. while语句 while循环和for循环类似,其格式为: while (条件语句) { 语句1 ; 语句2 ; .... 语句n ; } 执行while时,先测试“条件语句”,如果条件成立,则执行语句1到语句n,直至条件不成立时调处循环。 int i=0 ; while (i<10) { i++ ;
10、 printf("i的值%d\n”,i); } 2.do…while do ... while 循环语句的格式为: do { 语句1 ; 语句2 ; .... 语句n ; } while (条件语句) ; do ...while 语句的功能是首先执行语句1到语句n,然后进行条件测试,如果条件成立,则继续执行语句1到语句n,否这跳出循环。如: int test=0; do { test++; } while(test<10); 这种控制并不
11、是很常用,但有时却非常重要,使用时注意结尾处while语句后的分号。 3.for 循环 for语句的格式为: for (初始化语句; 条件语句; 控制语句) { 语句1 ; 语句2 ; .... 语句n ; } for 语句的执行顺序是:首先执行“初始化语句”;然后测试“条件语句”;若条件成立,则执行语句1到语句n;然后执行“控制”语句;接着再测试条件语句是否成立,如果成立则重复执行以上过程,直至条件不成立时才结束for循环。如: for(i=0;i<10;i++). printf(“%d”,
12、i); 你可以在for循环的头部说明你的变量,而且最后一个表达式可以省略,不过要确定在语句中对变量的值有所改变,如: for(int i=0;i<=10;) i+=i; for循环中,“初始化语句”、“条件语句”和“控制语句”都可以省略,但是其间的分号不能省略。例如: int i =0 ; for (; ; ;) { if i>10 break ; i = i +1 ; } for循环中省略“条件语句”时,在for语句{}中必须包换转句语句控制程序在某个条件满足时跳出for循环,否则将形成死循环
13、 4.break和continue语句 continue语句也会终止当前循环,和break语句不同的是,continue语句终止当前循环后又回到循环体的开头准备执行下一次循环。对于while循环和do/while循环,执行continue语句之后测试条件语句,如果值为真则继续执行下一次循环; while (条件语句) { 语句1 ; } int i=0; while(i<10){ i++; if(i==5) continue; } printf("%d\n",i); 对于for循环,执行continue语句之后首先计算控制语句,然后测试条件语句,如果值为真则继续执行下一次循环。 for (初始化语句; 条件语句; 控制语句) int i=0; for(i=0;i<10;i++){ if(i==5) continue; } Au:[PYG]whypro QQ:420094850






