第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx

上传人:b****3 文档编号:7161013 上传时间:2023-05-08 格式:DOCX 页数:32 大小:118.73KB
下载 相关 举报
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第1页
第1页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第2页
第2页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第3页
第3页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第4页
第4页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第5页
第5页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第6页
第6页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第7页
第7页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第8页
第8页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第9页
第9页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第10页
第10页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第11页
第11页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第12页
第12页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第13页
第13页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第14页
第14页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第15页
第15页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第16页
第16页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第17页
第17页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第18页
第18页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第19页
第19页 / 共32页
第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx

《第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx(32页珍藏版)》请在冰点文库上搜索。

第3章流程控制C语言教程零基础到大神Word文档下载推荐.docx

C\n"

7printf("

语\n"

8printf("

言\n"

9return0;

10}

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

图3-3运行结果

在例3-1的程序中,使用了5个printf()语句,从上往下依次输出“我、爱、C、语、言”。

从运行结果可以看出,程序是按照语句的先后顺序执行的。

因此,可以说明该程序是一个顺序结构的程序。

选择结构语句

在实际生活中经常需要作出一些判断,比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。

同样,在C语言中也经常需要对一些条件做出判断,从而决定执行哪一段代码,这时就需要使用选择语句。

选择结构语句分为if条件语句和switch条件语句,接下来本小节将对它们进行详细地讲解。

3.1.1if条件语句

if条件语句分为三种语法格式,每一种格式都有其自身的特点,下面分别进行讲解。

1、if语句

if语句是指如果满足某种条件,就进行相应的处理。

例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。

这句话可以通过下面的一段伪代码来描述。

如果小明考试得了100分

妈妈星期天带小明去游乐场

在上面的伪代码中,“如果”相当于C语言中的关键字if,“小明考试得了100分”是判断条件,需要用()括起来,“妈妈星期天带小明去游乐场”是执行语句,需要放在{}中。

修改后的伪代码如下:

if(小明考试得了100分)

{

}

上面的例子就描述了if语句的用法,在C语言中,if语句的具体语法格式如下:

if(条件语句)

{

代码块

上述语法格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会被执行。

if语句的执行流程如图3-4所示。

图3-4if语句流程图

接下来通过一个案例来学习if语句的具体用法,如例3-2所示。

例3-2

11#include<

12intmain()

13{

14//声明变量x

15intx=5;

16//如果x的值小于10则执行if大括号中的代码

17if(x<

10)

18{

19x++;

20}

21printf("

x=%d\n"

x);

22return0;

23}

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

图3-5运行结果

例3-2中,定义了一个变量x,其初始值为5。

在if语句的判断条件中判断x的值是否小于10,很明显条件成立,因此{}中的语句会被执行,变量x的值将进行自增。

从图3-5的运行结果可以看出,x的值已由原来的5变成了6。

2、if…else语句

if…else语句是指如果满足某种条件,就进行相应的处理,否则就进行另一种处理。

例如,要判断一个正整数的奇偶,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。

if…else语句的具体语法格式如下:

if(判断条件)

执行语句1

……

else

执行语句2

上述语法格式中,判断条件是一个布尔值。

当判断条件为true时,if后面{}中的执行语句1会被执行。

当判断条件为false时,else后面{}中的执行语句2会被执行。

if…else语句的执行流程如图3-6所示。

图3-6if…else语句流程图

接下来通过一个实现奇偶数判断的案例来演示if..else语句的具体用法,如例3-3所示。

例3-3

24#include<

25intmain()

26{

27intnum=19;

28if(num%2==0)

29{

30//判断条件成立,num被2整除

31printf("

num是一个偶数\n"

32}

33else

34{

35printf("

num是一个奇数\n"

36}

37return0;

38}

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

图3-7运行结果

例3-3中,变量num的值为19,模以2的结果为1,不等于0,判断条件不成立。

因此会执行else后面{}中的语句,打印“num是一个奇数”。

3、if…elseif…else语句

if…elseif…else语句用于对多个条件进行判断,从而进行多种不同的处理。

例如,对一个学生的考试成绩进行等级的划分,如果分数大于等于80分等级为优,如果分数小于80分大于等于70分等级为良,如果分数小于70分大于等于60分等级为中,否则,等级为差。

if…elseif…else语句的具体语法格式如下:

if(判断条件1)

执行语句1

elseif(判断条件2)

执行语句2

……

elseif(判断条件n)

执行语句n

}

else

执行语句n+1

当判断条件1为true时,if后面{}中的执行语句1会执行。

当判断条件1为false时,会继续执行判断条件2,如果为true则执行语句2,以此类推,如果所有的判断条件都为false,则意味着所有条件均未满足,else后面{}中的执行语句n+1会被执行。

if…elseif…else语句的执行流程如图3-8所示。

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

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

例3-4

39#include<

40intmain()

41{

42intgrade=75;

//定义学生成绩

43if(grade>

=80)

44{

45//满足条件grade>

=80

46printf("

该成绩的等级为优\n"

47}

48elseif(grade>

=70)

49{

50//不满足条件grade>

=80,但满足条件grade>

=70

51printf("

该成绩的等级为良\n"

52}

53elseif(grade>

=60)

54{

55//不满足条件grade>

=70,但满足条件grade>

=60

56printf("

该成绩的等级为中\n"

57}

58else

59{

60//不满足条件grade>

61printf("

该成绩的等级为差\n"

62}

63return0;

64}

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

图3-9运行结果

例3-4中,定义了学生成绩grade为75。

它不满足第一个判断条件grade>

=80,会执行第二个判断条件grade>

=70,条件成立,因此会打印“该成绩的等级为良”。

多学一招:

三元运算符

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

判断条件?

表达式1:

表达式2

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

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

intx=0;

inty=1;

intmax;

if(x>

y)

max=x;

}else

max=y;

上面的代码运行之后,变量max的值为1。

如果if…else语句用三元运算来替换,具体代码如下:

max=x>

y?

x:

y;

3.1.2switch条件语句

switch条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。

例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:

用于表示星期的数字

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

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

如果等于3,则输出星期三

如果等于4,则输出星期四

如果等于5,则输出星期五

如果等于6,则输出星期六

如果等于7,则输出星期天

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

对于上面一段伪代码的描述,大家可能会立刻想到用刚学过的if…elseif…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。

这时就可以使用C语言中的switch语句来实现这种需求。

在switch语句中switch关键字后面有一个表达式,case关键字后面有目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。

接下来通过一段伪代码来描述switch语句的基本语法格式,具体如下:

switch(表达式)

case目标值1:

break;

case目标值2:

case目标值n:

default:

在上面的语法格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,就会执行相应case后的语句,否则执行default后的语句。

关于switch语句中的break关键字将在后面的小节中做具体介绍,此处,初学者只需要知道break的作用是跳出switch语句即可。

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

例3-5

65#include<

66intmain()

67{

68intweek=5;

69switch(week)

70{

71case1:

72printf("

星期一"

73break;

74case2:

75printf("

星期二"

76break;

77case3:

78printf("

星期三"

79break;

80case4:

81printf("

星期四"

82break;

83case5:

84printf("

星期五"

85break;

86case6:

87printf("

星期六"

88break;

89case7:

90printf("

星期天"

91break;

92default:

93printf("

输入的数字不正确..."

94break;

95}

96return0;

97}

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

图3-10运行结果

例3-5中,由于变量week的值为5,整个switch语句判断的结果满足第19行的条件,因此打印“星期五”。

程序中的default语句用于处理和前面的case都不匹配的情况,将第5行代码替换为intweek=8,再次运行程序,输出结果如图3-11所示。

图3-11运行结果

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。

例如,使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时视为工作日,否则视为休息日,这时如果需要判断一周中的某一天是否为工作日,就可以采用switch语句的简写方式,具体如例3-6所示。

例3-6

98#include<

99intmain()

100{

101intweek=2;

102switch(week)

103{

104case1:

105case2:

106case3:

107case4:

108case5:

109//当week满足值1、2、3、4、5中任意一个时,处理方式相同

110printf("

今天是工作日\n"

111break;

112case6:

113case7:

114//当week满足值6、7中任意一个时,处理方式相同

115printf("

今天是休息日\n"

116break;

117}

118return0;

119}

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

图3-12运行结果

例3-6中,当变量week的值为1、2、3、4、5中任意一个值时,处理方式相同,都会打印“今天是工作日”。

同理,当变量week值为6、7中任意一个值时,打印“今天是休息日”。

循环结构语句

在实际生活中经常会将同一件事情重复做很多次,比如在走路时,会重复使用左右脚,打乒乓球时,会重复挥拍的动作等。

同样在C语言中,也经常需要重复执行同一代码块,这时就需要使用循环语句。

循环语句分为while循环语句、do…while循环语句和for循环语句三种。

接下来,本小节将针对这三种循环语句分别进行详细地讲解。

3.1.3while循环语句

while循环语句和3.3小节讲到的条件判断语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。

区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会一直执行,直到条件不成立,while循环结束。

while循环语句的具体语法格式如下:

while(循环条件)

执行语句

………

在上面的语法格式中,{}中的执行语句被称作循环体,循环体是否执行取决于循环条件。

当循环条件为true时,循环体就会被执行。

循环体执行完毕时会继续判断循环条件,如条件仍为true则会继续执行,直到循环条件为false时,整个循环过程才会结束。

while循环的执行流程如图3-13所示。

图3-13while循环的流程图

接下来通过while语句来实现1~4之间自然数的打印,如例3-7所示。

例3-7

120#include<

121intmain()

122{

123intx=1;

//定义变量x,初始值为1

124while(x<

=4)//循环条件

125{

126printf("

x=%d\n"

x);

//条件成立,打印x的值

127x++;

//x进行自增

128}

129return0;

130}

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

图3-14while循环

例3-7中,x的初始值为1,在满足循环条件x<

=4的情况下,循环体会重复执行,打印x的值并让x进行自增。

因此打印结果中x的值分别为1、2、3、4。

值得注意的是,例3-7中的第8行代码用于在每次循环时改变变量x的值,直到循环条件不成立,如果没有这行代码,整个循环会进入无限循环的状态,永远不会结束。

3.1.4do-while循环语句

do…while循环语句和while循环语句功能类似,二者的不同之处在于,while语句需要先判断循环条件,然后根据判断结果来决定是否执行大括号中的代码,而do…while循环语句先要执行一次大括号内的代码再判断循环条件,其具体语法格式如下:

do

执行语句

}while(循环条件);

在上面的语法格式中,关键字do后面{}中的执行语句是循环体。

do…while循环语句将循环条件放在了循环体的后面。

这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。

do…while循环的执行流程如图3-15所示。

图3-15do…while循环的执行流程

接下来使用do…while循环语句将例3-7进行改写,如例3-8所示。

例3-8

131#include<

132intmain()

133{

134intx=1;

135do

136{

137printf("

138x++;

139}while(x<

=4);

//循环条件

140return0;

141}

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

图3-16dowhile实例

例3-8和例3-7的运行结果一致,这说明do…while循环和while循环能实现同样的功能。

然而在程序运行过程中,这两种语句还是有差别的。

如果循环条件在循环语句开始时就不成立,那么while循环的循环体一次都不会执行,而do…while循环的循环体还是会执行一次。

若将例中的循环条件x<

=4改为x<

1,例3-8会打印x=1,而例3-7什么也不会打印。

3.1.5for循环语句

在前面的小节中分别讲解了while循环和do…while循环。

在程序开发中,还经常会使用另一种循环语句,即for循环,它通常用于循环次数已知的情况,其具体语法格式如下:

for(初始化表达式;

循环条件;

操作表达式)

执行语句

………

在上面的语法格式中,for关键字后面()中包括了初始化表达式、循环条件和操作表达式三部分内容,它们之间用“;

”分隔,{}中的执行语句为循环体。

接下来分别用“①”表示初始化表达式、“②”表示循环条件、“③”表示操作表达式、“④”表示循环体,通过序号来具体分析for循环的执行流程。

具体如下:

for(①;

②;

③)

第一步,执行①

第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步

第三步,执行④

第四步,执行③,然后继续执行第二步

第五步,退出循环

接下来通过一个案例对自然数1~4进行求和,如例3-9所示。

例3-9

142#include<

143intmain()

144{

145intsum=0;

//定义变量sum,用于记住累加的和

146for(inti=1;

i<

=4;

i++)//i的值会在1~4之间变化

147{

148sum+=i;

//实现sum与i的累加

149}

150printf("

sum=%d\n"

sum);

//打印累加的和

151return0;

152}

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

图3-17运行结果

例3-9中,变量i的初始值为1,在判断条件i<

=4为true的情况下,会执行循环体sum+=i,执行完毕后,会执行操作表达式i++,i的值变为2,然后继续进行条件判断,开始下一次循环,直到i=5时,条件i<

=4为false,结束循环,执行for循环后面的代码,打印“sum=10”。

为了让初学者能熟悉整个for循环的执行过程,现将例3-9运行期间每次循环中变量sum和i的值通过表3-1罗列出来。

表3-1sum和i循环中的值

循环次数

sum

i

第一次

1

第二次

3

2

第三次

6

第四次

10

4

3.1.6循环嵌套

有时为了解决一个较为复杂的问题,需要在一个循环中再定义一个循环,这样的方式被称作循环嵌套。

在C语言中,while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,这当中最常见的就是在for循环中嵌套for循环,具体语法格式如下:

操作表达式)

for(初始化表达式;

执行语句;

………

}

接下来通过for语句的循环嵌套来实现使用“*”打印直角三角形,如例3-10所示。

例3-10

153#include<

154intmain()

155{

156inti,j;

//定义两个循环变量

157for(i=1;

=9;

i++)//外层循环

158

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2