好文档 - 专业文书写作范文服务资料分享网站

第3章流程控制C语言教程零基础到大神 

天下 分享 时间: 加入收藏 我要投稿 点赞

面{}中的语句,打印“num是一个奇数”。

3、if…else if…else语句

第3章 流程控制

if…else if…else语句用于对多个条件进行判断,从而进行多种不同的处理。例如,对一个学生的考试成绩进行等级的划分,如果分数大于等于80分等级为优,如果分数小于80分大于等于70分等级为良,如果分数小于70分大于等于60分等级为中,否则,等级为差。if…else if…else语句的具体语法格式如下:

if (判断条件1) { }

else if (判断条件2) { } ……

else if (判断条件n) { } else { }

执行语句n+1 执行语句n 执行语句2 执行语句1

上述语法格式中,判断条件是一个布尔值。当判断条件1为true时,if后面{}中的执行语句1会执行。当判断条件1为false时,会继续执行判断条件2,如果为true则执行语句2,以此类推,如果所有的判断条件都为false,则意味着所有条件均未满足,else后面{}中的执行语句n+1会被执行。if…else if…else语句的执行流程如图3-8所示。

6

开始 判断条件1true执行语句1falsetrue 判断条件2false执行语句2true……false……true判断条件nfalse执行语句n执行语句n+1结束

图3-8 if…else if…else语句的流程图

接下来通过一个对学生考试成绩进行等级划分的案例来演示if…else if…else语句的用法,如例3-4所示。

例3-4

1 #include 2 int main() 3 { 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

int grade = 75; //定义学生成绩 if (grade >= 80) { }

else if (grade >= 70) { }

else if (grade >= 60) { } else {

7

//不满足条件 grade >= 70 ,但满足条件 grade >= 60 printf(\该成绩的等级为中\\n\

//不满足条件 grade >= 80 ,但满足条件 grade >= 70 printf(\该成绩的等级为良\\n\//满足条件 grade >=80

printf(\该成绩的等级为优\\n\

22 23 24 25 26 }

}

return 0;

//不满足条件 grade >= 60 printf(\该成绩的等级为差\\n\

第3章 流程控制

运行结果如图3-9所示。

图3-9 运行结果

例3-4中,定义了学生成绩grade为75。它不满足第一个判断条件grade>=80,会执行第二个判断条件grade>=70,条件成立,因此会打印“该成绩的等级为良”。

?多学一招:三元运算符

在C语言中有一种特殊的运算叫做三元运算,它和if…else语句类似,具体语法格式如下:

判断条件 ? 表达式1 : 表达式2

三元运算通常用于对某个变量进行赋值,当判断条件成立时,运算结果为表达式1的值,否则结果为表达式2的值。

例如求两个数x、y中的较大者,如果用if…else语句来实现,具体代码如下:

int x = 0; int y = 1; int max; if (x > y) { { }

max = y; max = x; } else

上面的代码运行之后,变量max的值为1。如果if…else语句用三元运算来替换,具体代码如下:

int x = 0; int y = 1; int max;

max = x > y ? x : y;

3.3.2 switch条件语句

switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:

用于表示星期的数字

如果等于1,则输出星期一 如果等于2,则输出星期二

8

如果等于3,则输出星期三 如果等于4,则输出星期四 如果等于5,则输出星期五 如果等于6,则输出星期六 如果等于7,则输出星期天

如果不是1~7,则输出此数字为非法数字

对于上面一段伪代码的描述,大家可能会立刻想到用刚学过的if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。这时就可以使用C语言中的switch语句来实现这种需求。在switch语句中switch关键字后面有一个表达式,case关键字后面有目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。接下来通过一段伪代码来描述switch语句的基本语法格式,具体如下:

switch (表达式) { }

case 目标值1:

执行语句1 break;

case 目标值2: ……

case 目标值n:

执行语句n break; 执行语句2 break;

default:

执行语句n+1 break;

在上面的语法格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,就会执行相应case后的语句,否则执行default后的语句。关于switch语句中的break关键字将在后面的小节中做具体介绍,此处,初学者只需要知道break的作用是跳出switch语句即可。

接下来通过一个案例来实现根据数字输出中文格式的星期的功能,如例3-5所示。

例3-5

1 #include 2 int main() 3 { 4 5 6 7 8 9 10 11 12

int week = 5; switch (week) { case 1:

printf(\星期一\break;

case 2:

printf(\星期二\break;

9

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 }

case 3:

printf(\星期三\break;

第3章 流程控制

case 4:

printf(\星期四\break;

case 5:

printf(\星期五\break;

case 6:

printf(\星期六\break;

case 7:

printf(\星期天\break;

default: }

return 0;

printf(\输入的数字不正确...\break;

运行结果如图3-10所示。

图3-10 运行结果

例3-5中,由于变量week的值为5,整个switch语句判断的结果满足第19行的条件,因此打印“星期五”。程序中的default语句用于处理和前面的case都不匹配的情况,将第5行代码替换为int week = 8,再次运行程序,输出结果如图3-11所示。

图3-11 运行结果

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时视为工作日,否则视为休息日,这时如果需要判断一周中的某一天是否为工作日,就可以采用switch语句的简写方式,具体如例3-6所示。

例3-6

1 #include 2 int main() 3 { 4 5 6

int week = 2; switch (week) {

10

第3章流程控制C语言教程零基础到大神 

面{}中的语句,打印“num是一个奇数”。3、if…elseif…else语句第3章流程控制if…elseif…else语句用于对多个条件进行判断,从而进行多种不同的处理。例如,对一个学生的考试成绩进行等级的划分,如果分数大于等于80分等级为优,如果分数小于80分大于等于70分等级为良,如果分数小于70分大于等于60分等
推荐度:
点击下载文档文档为doc格式
877sp9tq6q20sz532alg3gznb0gsy200bqa
领取福利

微信扫码领取福利

微信扫码分享