1、第三章第三章 控制流控制流2学习三种结构的程序设计方法学习三种结构的程序设计方法顺序结构程序设计顺序结构程序设计选择结构程序设计选择结构程序设计循环结构程序设计循环结构程序设计掌握每一种语句的格式、功能、执行过程和执行掌握每一种语句的格式、功能、执行过程和执行结果,并学习如何将这些语句组织成程序结果,并学习如何将这些语句组织成程序学习逻辑问题的解题思路,及递推、迭代的方法学习逻辑问题的解题思路,及递推、迭代的方法2基本概念:基本概念:程序的三种基本结构程序的三种基本结构C C语句概述语句概述字符数据的输入输出字符数据的输入输出3一个良好的程序由以下三种基本结一个良好的程序由以下三种基本结构组成
2、。构组成。顺序结构顺序结构选择结构选择结构循环结构循环结构ABBAPyesnonoPAyes4几个概念:几个概念:1 1、一个、一个c c程序可以有若干个源程序文件组成程序可以有若干个源程序文件组成2 2、一个源文件可以有若干个函数和预处理命令以及、一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成全局变量声明部分组成3 3、一个函数有函数首部和函数体组成、一个函数有函数首部和函数体组成4 4、函数体由数据声明和执行语句组成、函数体由数据声明和执行语句组成C C语句分为语句分为控制语句控制语句函数调用语句函数调用语句表达式语句表达式语句空语句空语句复合语句复合语句5C程序程序源程序
3、文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n预处理命令预处理命令函数函数n函数函数1数据声明数据声明函数首部函数首部函数体函数体数据声明数据声明执行语句执行语句C程序的结构:程序的结构:61 1、一个、一个c c程序可以有若干个源程序文件组成程序可以有若干个源程序文件组成2 2、一个源文件可以有若干个函数和预处理命令以及、一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成全局变量声明部分组成3 3、一个函数有函数首部和函数体组成、一个函数有函数首部和函数体组成4 4、函数体由数据声明和执行语句组成、函数体由数据声明和执行语句组成C C语句分为语句分为控制语句控制语句
4、函数调用语句函数调用语句表达式语句表达式语句空语句空语句复合语句复合语句7C语句概述语句概述(一一)控制语句控制语句 完成一定的控制功能完成一定的控制功能1 1 if()else if()else 条件条件语句语句 6 break 6 break 中止语句中止语句 2 2 for()for()循环循环语句语句 7 7 switch()switch()多分支选择语句多分支选择语句3 3 while()while()循环循环语句语句 8 8 return return 返回语句返回语句4 4 do while();do while();循环循环语句语句 9 9 gotogoto 转向语句转向语句
5、5 5 continue continue 结束本次循环语句结束本次循环语句8(二二)函数调用语句函数调用语句 由一个函数调用加一个分号构成。由一个函数调用加一个分号构成。Printf(“This is a C statement.”);C语句概述语句概述 9(三三)表达式语句表达式语句 由一个表达式加一个分号构成由一个表达式加一个分号构成 a =4 ;C语句概述语句概述 10(四四)空语句空语句 只有一个分号的语句只有一个分号的语句 (什么也不做)(什么也不做)用来做流程的转向点用来做流程的转向点用来作为循环语句中的循环体用来作为循环语句中的循环体C语句概述语句概述 11(五)复合语句五)复
6、合语句 用一对用一对括起来的语句括起来的语句 z=z=x+yx+y;t=z/100;t=z/100;printf(“%f”,t);printf(“%f”,t);注意:注意:复合语句中最后一个语句中最后的分号不能忽略复合语句中最后一个语句中最后的分号不能忽略不写。不写。C语句概述语句概述 12字符数据的输入输出字符数据的输入输出复习:复习:printf函数,函数,scanf函数函数13格式字符格式字符说明说明d,i用来输入有符号的十进制整数用来输入有符号的十进制整数 u用来输入无符号的十进制整数用来输入无符号的十进制整数 o用来输入无符号的八进制整数用来输入无符号的八进制整数 x X 用来输入无
7、符号的十六进制整数用来输入无符号的十六进制整数(大小写作用相同大小写作用相同)c用来输入单个字符用来输入单个字符 s用来输入字符串,将字符串送到一个字符数组中,用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志束。字符串以串结束标志作为其最后一个字符作为其最后一个字符 f用来输入实数,可以用小数形式或指数形式输入用来输入实数,可以用小数形式或指数形式输入 e E g G 与作用相同,与、与作用相同,与、g可以互相替换可以互相替换(大小写作大小写作用相同用相同)scanfscanf格式字符格式
8、字符 14字符字符说明说明l l用于输入长整型数据(可用用于输入长整型数据(可用%ld%ld,%lo%lo,%lx%lx,%lulu)以及以及doubledouble型数据(用型数据(用%lf%lf或或%le%le)h h用于输入短整型数据(可用,用于输入短整型数据(可用,)域宽域宽指定输入数据所占宽度(列数),域宽应为正整数指定输入数据所占宽度(列数),域宽应为正整数 表示本输入项在读入后不赋给相应的变量表示本输入项在读入后不赋给相应的变量 scanfscanf格式字符格式字符 说明:说明:对对unsignedunsigned型变量所需要的数据,可以用型变量所需要的数据,可以用%u%u,%d
9、%d或或%o%o,%x%x格式输入。格式输入。可以指定输入数据所占的列数,系统自动按它截取所需数据。可以指定输入数据所占的列数,系统自动按它截取所需数据。如果在如果在%后有一个后有一个“*”附加说明符,表示跳过它指定的列数。附加说明符,表示跳过它指定的列数。输入数据时不能规定精度。输入数据时不能规定精度。15字符数据的输入输出字符数据的输入输出 用用putchar函数输出一个字符函数输出一个字符 putcharputchar函数(字符输出函数)的作用是向终端输出函数(字符输出函数)的作用是向终端输出一个字符。一个字符。一般形式为一般形式为 putchar(cputchar(c)可以是字可以是字
10、符型变量或符型变量或整型变量整型变量 16 例例1:输出单个字符。:输出单个字符。#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);17字符数据的输入输出字符数据的输入输出 用用getchar函数输入一个字符函数输入一个字符 getchargetchar函数(字符输入函数)的作用是从计算机终函数(字符输入函数)的作用是从计算机终端输入一个字符。端输入一个字符。getchar函数没有参数,一般形式为函数没有参数,一般形式为 getchar()()函数的值就是函数的值就是从输入
11、设备得从输入设备得到的字符到的字符 18例例2:输入单个字符。输入单个字符。#includevoid main()char c;c=getchar();putchar(c);putchar(n);运行程序:运行程序:从键盘输入字符从键盘输入字符aa按按EnterEnter键,幕上将显示输出键,幕上将显示输出的字符的字符aa。19学习三种结构的程序设计方法学习三种结构的程序设计方法顺序结构程序设计顺序结构程序设计选择结构程序设计选择结构程序设计循环结构程序设计循环结构程序设计掌握每一种语句的格式、功能、执行过程和执行掌握每一种语句的格式、功能、执行过程和执行结果,并学习如何将这些语句组织成程序结
12、果,并学习如何将这些语句组织成程序学习逻辑问题的解题思路,及递推、迭代的方法学习逻辑问题的解题思路,及递推、迭代的方法2021顺序结构的程序中的语句是按照从上到下的顺序顺序结构的程序中的语句是按照从上到下的顺序逐行排列的;逐行排列的;程序的执行顺序是按语句的排列顺序进行的。程序的执行顺序是按语句的排列顺序进行的。完成顺序程序设计的语句包括:完成顺序程序设计的语句包括:赋值语句赋值语句复合语句复合语句函数调用语句函数调用语句22例例3:设:设1990年我国工业产值是年我国工业产值是100,如果每,如果每年以年以7.4%的速度增长,求的速度增长,求20年后我国的工业年后我国的工业产值是多少?产值是
13、多少?顺序结构程序设计举例顺序结构程序设计举例 231 1、分析:计算产值的公式是:、分析:计算产值的公式是:2 2、安排计算步骤、安排计算步骤3 3、写出完整的程序、写出完整的程序p p1 1=p=p0 0(1+r1+r)n n其中:其中:p p1 1为为n n年后的产值,年后的产值,p p0 0为初始为初始值,值,r r为增长率,为增长率,n n 为年数。为年数。242、解决问题的步骤:、解决问题的步骤:1)定义变量定义变量:2)输入:输入:p0,n,r;3)计算计算 p1;4)输出输出 p1;floatp1,p0,r;p1=p0(1+r)n其中:其中:p1为为n年后的产值,年后的产值,p
14、0为初为初始值,始值,r为增长率,为增长率,n 为年数。为年数。intn;253 3、写出完整程序:、写出完整程序:26顺序结构程序设计举例顺序结构程序设计举例 例例4 4:求:求axax2 2方程的根。方程的根。a a,b b,c c由键盘输入,设由键盘输入,设 。acb4227求求x x2 2方程的根。方程的根。a a,b b,c c由键盘输入,设由键盘输入,设 。众所周知,一元二次方程式的根为众所周知,一元二次方程式的根为x1=x2=x1=x2=可以将上面的分式分为两项:可以将上面的分式分为两项:p=p=,q=x1=q=x1=p+qp+q,x2=x2=p-qp-qacb42aacbb24
15、2aacbb242ab2aacb24228#include#include#include#include void main()void main()float a,b,c,disc,x1,x2,p,q;float a,b,c,disc,x1,x2,p,q;scanf(ascanf(a=%=%f,bf,b=%=%f,cf,c=%=%f,&a,&b,&cf,&a,&b,&c););disc=b disc=b*b-4b-4*a a*c;c;p=-b/(2 p=-b/(2*a);a);q=sqrt(disc)/(2 q=sqrt(disc)/(2*a);a);x1=p+q;x2=x1=p+q;x2=p-qp-q;printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);2930