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

C语言程序设计第五章 分支结构和循环结构

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

第五章 分支结构和循环结构

【学习目标】

本章将详细介绍在C语言中如何进行流程控制。主要包括分支语句、循环语句、流程跳转语句等。本章的学习要点包括如下几点: (1)if分支语句。 (2)switch多分支语句。 (3)while循环语句。 (4)do-while循环语句。 (5)for循环语句。 (6)流程跳转语句。 【学习导航】

本章的在整个课程中的位置如图5-1所示。

图5-1 本章学习导航

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下一行一行地执行,中间没有任何判断和跳转。如图5-2所示。 如果main方法多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。这意味着:如果没有流程控制,方法里的语句是一个顺序执行流,从上向下依次执行每条语句。但是,当我们需要根据不同的情况来有选择的做一些操作时,顺序结构就不能满足要求了,这时候就需要分支结构出马了! 图 5-2 顺序结构语句的执行流程

5.1 分支结构

迄今为止,我们编写的程序都是按顺序从main方法的第一行执行到最后一行。但现实世界中有些情况是在必须满足一定条件下才发生的,比如一个学生能拿奖学金必须满足每门课程在75分以上。选择语句的基本功能是使程序在不同的情况下,执行不同的代码。这样程序就不单只是顺序执行了,可以按照预先定好的逻辑执行不同的流程(比如满足条件A就执行流程A,满足条件B就执行流程B)。C语言中有两种选择语句:if语句和switch语句。

5.1.1 if语句

1. 简略形式

基本的if语句的语法为:

if (表达式) { 程序代码块;//如果表达式为真,就执行这段代码 } if语句的作用是:当圆括号里的表达式返回值为真,则程序会执行花括号里面的程序代码块。如果表达式值为假,则不会执行花括号里的程序代码块。其执行流程可以参考图5-3。

图 5-3 基本if条件语句的执行流程

现在我们用这种写法来完成【课堂案例5-1】。

【课堂案例5-1】在学生成绩管理系统中,需要对学生的成绩进行管理,请编写程序来根据学生的成绩给出相应信息: 60分以上为“及格”,否则不显示。 【案例目标】会使用简略if语句

【案例知识要点】简略if语句的写法、表达式的运用。 【案例程序代码】simpleIf.c 1 #include 2 main() 3 { 4 int score=65; 5 6 if(score>=60) 7 { 8 printf(\及格\\n\9 } 10 } 【案例代码说明】

? 第4行定义了一个变量score,初始化为65,用来保存学生成绩。

? 第6行,系统会计算关系表达式“score>=60”的值,返回为true,所以会执行花括号里的输出语句,程序的输出结果如图5-4: 图5-4 Simple.c程序输出结果

? 试一试(一):

如果修改一下程序的第4行,将score的值改为50,再运行。程序的执行结果是怎样的

呢?

说明:因为这时系统在计算第6行的表达式的值为false,所以不会执行花括号里的代码。最终main方法执行完后没有任何输出信息。

? 试一试(二):

将程序代码的第7行和第9行的花括号删除,再运行。程序的执行结果是怎样的呢? 说明:如果程序代码块只有一条语句,则可以省略{}(但不推荐这种写法,参见下面的【规则5-1】)。但if语句或else语句的程序代码块中包含多条语句,则必须放在花括号{}内。 编程规范:

【规则5-1】if、for、do、while语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

? 试一试(三):

下面的代码片段会输出什么结果?

1 #include 2 main() 3 { 4 int i = 0; 5 if(i != 0 ) 6 i = i + 5; 7 i = i + 10; 8 printf(\9 } 上面的程序并没有任何语法错误,所以是可以编译成功并执行的。可能有读者会以为输出结果是0,因为程序第5行的表达式返回值显然为false。所以后面的代码是不会执行的。但是不执行的代码只有第6行,第7行是会执行的。因为在if后面没写{}的情况下,if的作用范围只有if后面的第一条语句。从这个例子可以看出,这种写法存在一定的误导,所以良好的编程规范是:即使if后面只有一条语句,也要用{}括起来。 【课堂练习】

1.编写程序判断输入的数是不是偶数? 2.编写程序判断输入的年份是不是闰年? 2. 完整形式

接下来我们修改一下需求,假设对某个学生成绩进行判断,如果大于等于60则打印“及格”,如果小于60分则打印“不及格”。 要完成这个功能就需要用到if的完整形式。基本语法如下:

if (表达式) { 程序代码块1; //表达式值为真时执行 } else { 程序代码块2; //表达式值为假时执行 } 执行流程如图5-5所示。

图 5-5 完整形式if条件语句的执行流程

【课堂案例5-2】在学生成绩管理系统中,需要对学生的成绩进行管理,请编写程序来根据学生的成绩给出相应信息:如果大于等于60则打印“及格”,如果小于60分则打印“不及格”。

【案例目标】会使用完整形式的if语句

【案例知识要点】if完整形式的用法、else的理解 【案例程序代码】fullIf.c 1 #include 2 main() 3 { 4 int score=65; 5 6 if(score>=60) 7 { 8 printf(\及格\\n\9 } 10 else 11 { 12 printf(\不及格\\n\13 } 14 } 【案例代码说明】

? 第4行定义了一个变量score,初始化为65,用来保存学生成绩。

? 第6行,系统会计算关系表达式“score>=60”的值,返回为true,所以会执行花括号里的输出语句,程序的输出结果为图5-6左:

? 修改第4行score的值为55,则第6行的表达式返回false,系统会跳到第10行,执行else(表示score<60的情况)后花括号里的代码,输出图5-6右。 图5-6 FullIf.c程序输出结果

【课堂练习】

1.编写程序testIf1.c,定义一个整型变量score,赋值0~100之间。判断score的大小,如果大于等于80,则输出“优秀”,否则输出“还要努力”。

2.编写程序upperCaseLetter.c,完成如下功能:判断输入的是否大写字母,是则输出“您输入的是大写字母”,否则输出“不是大写字母”。 3. if语句的嵌套

继续完善【课堂案例5-2】的功能。要求程序对60分以上的给出更细化的等级,增加“优”的等级,即:60~79分为“及格”,80分以上为“优秀”。

单单使用前面介绍的if-else是无法完成这个功能的。因为if-else表示事务的两个对

C语言程序设计第五章 分支结构和循环结构

第五章分支结构和循环结构【学习目标】本章将详细介绍在C语言中如何进行流程控制。主要包括分支语句、循环语句、流程跳转语句等。本章的学习要点包括如下几点:(1)if分支语句。(2)switch多分支语句。(3)while循环语句。(4)do-while循环语句。(5)for循环语句。(6)流程跳转语句。【学习导航】
推荐度:
点击下载文档文档为doc格式
9hccp4luel8uhsm07tfq670et7c26i0176m
领取福利

微信扫码领取福利

微信扫码分享