C语言流程控制教材_第1页
C语言流程控制教材_第2页
C语言流程控制教材_第3页
C语言流程控制教材_第4页
C语言流程控制教材_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3 3章章 C C语言流程控制语言流程控制本章重点 格式化输入输出函数 C语言中的顺序、分支和循环程序的设计方法3.1格式化输入输出函数 printf()函数 scanf()函数3.11 printf()函数 C标准库函数中提供了一些输入输出函数,如前面遇到的printf()函数和scanf()函数,它们非C关键词,而是函数名而已,可以自己编写输入输出函数。printf()函数和scanf()函数在系统文件“stdio.h”中声明,所以在程序的开始部分要使用编译预处理命令“#include ”。在日常生活中,我们要经常将华氏温度转换成摄氏温度,其转换公式如下:式中: c表示摄氏温度, f表

2、示华氏温度。运行结果:运行结果:9325fc如: printf()函数的作用就是输出。对比:函数语句:printf(fahr = %f, celsius = %fn, fahr, celsius);输出结果: fahr = 100.000000,celsius = 37.777778得出:双引号里,第一个%f换成了fahr的值,第二个%f换成了celsius的值,并且以单精度数据形式显示。printf()函数一般的调用格式为:printf(格式控制字符串格式控制字符串, 输出参数输出参数1, 输出参输出参数数2, , 输出参数输出参数n);“格式控制字符串”是用双引号括起来的字符串,也称作“转

3、换控制字符串”,包括两种意思。 普通字符普通字符即需要原样输出字符。如: printf(fahr = %f, celsius = %fn, fahr, celsius); fahr = 100.000000,celsius = 37.777778双引号内,两个%f变化除外,其余均无改变 格式说明格式说明由“%”和格式字符组成,如%d、%f等,它的作用是将输出的数据转换成指定的格式输出。格式说明格式说明输出输出%c%d%e%E%x%u%s%o%G%g%f%X一个字符一个字符根据数值的不同自动选择根据数值的不同自动选择%f或或%e。用于指数小于。用于指数小于-4或者大于精度或者大于精度根据数值的不

4、同自动选择根据数值的不同自动选择%F或或%E。用于指数小于。用于指数小于-4或者大于精度或者大于精度无符号八进制整数无符号八进制整数字符串字符串无符号十进制整数无符号十进制整数使用十六进制数字使用十六进制数字of的无符号十六进制整数的无符号十六进制整数使用十六进制数字使用十六进制数字oF的无符号十六进制整数的无符号十六进制整数输出一个输出一个%有符号十进制整数有符号十进制整数浮点数、以指数的形式输出(浮点数、以指数的形式输出(1.2e+02)浮点数、以指数的形式输出(浮点数、以指数的形式输出(1.2E+02)以小数点形式输出浮点数、十进制记数法以小数点形式输出浮点数、十进制记数法字符字符说明说

5、明l用于长整型整数,可加在格式符用于长整型整数,可加在格式符d、o、x、u前面前面m(正整数正整数)数据最小宽度数据最小宽度n(正整数正整数)对于实数,表示输出对于实数,表示输出n位小数;对于字位小数;对于字符串,表示截取的字符个数符串,表示截取的字符个数输出的数字或者字符在域内向左靠输出的数字或者字符在域内向左靠1.对于%md和%ms,m为指定输出数据的宽度,如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。例如:printf(%4d, %4d, a, b) 若a = 12,b = 12345,则输出结果为:12,12345 注意:注意:2.对于%-ms,如果字符串的长度小于m

6、,则输出m列,不足的位数在右侧补空格。例如:printf(“%-4d,%-4d”,a,b);若a=12,b=12345;结果为:a=12,b=12345。3.对于%m.s,输出占m列,但只是取字符串中左端n个字符,这n个字符输出在m列的右侧,左端补空格。%-m.s则在右侧补空格,如果n m,则m自动取n值,即保证n个字符正常输出。4.对于%m.nf,指定输出的数据共占m列,其中n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf一样,只是使输出的数值向左端靠,右端补空格。3.1.2 scanf()函数 依旧探讨华氏温度转换成摄氏温度,上一节中,华氏温度为一定值,如果根据用户来输

7、入相应的数据,求摄氏温度,那该如何进行相应的输入呢?运行结果:Please input fahr :140fahr = 140.000000,celsius = 60.000000scanf()函数作用,函数作用,输入数值输入数值例:例: scanf函数的作用是输入数据,其基本格式为: scanf(格式控制格式控制,地址列表,地址列表) “格式控制”的含义和printf函数的格式控制。格式说明也是以%开始,以一个格式字符结束,中间可以插入一些普通字符 ,普通字符同样按原样输出。格式说明符格式说明符意义意义%c输入单个字符输入单个字符%d输入有符号的十进制整数输入有符号的十进制整数%f输入浮点数

8、,可以用小数或者整数形式输入输入浮点数,可以用小数或者整数形式输入%o输入无符号的八进制数输入无符号的八进制数%s输入字符串,将字符串存放到一个字符数组中,输入时以非输入字符串,将字符串存放到一个字符数组中,输入时以非空白字符开始,以第一个空白字符结束,字符串以串结束标空白字符开始,以第一个空白字符结束,字符串以串结束标志志0作为其最后一个字符。作为其最后一个字符。%u输入无符号的十进制整数输入无符号的十进制整数%x,%X输入无符号的十六进制整数输入无符号的十六进制整数%e,% E,%g,%G与与%f的作用相同,的作用相同,e,f,g可以互相替换而且大小写的作用相可以互相替换而且大小写的作用相

9、同。同。 scanf函数的格式说明符函数的格式说明符字符字符意义意义l用于输入长整型数据,可用于用于输入长整型数据,可用于%ld、%lo、%lx、%lu以及以及double型数型数据据%lf或或%leh用于输入短整型数据,可用于用于输入短整型数据,可用于%hd、%ho、%hx域宽域宽指定输入数据所占的列宽,应为一个正整数指定输入数据所占的列宽,应为一个正整数*表示本输入项在读入后不赋给相应的变量表示本输入项在读入后不赋给相应的变量如:如:scanf(”%d”,&i); 输入输入1234,结果,结果i的值为的值为1234 输入输入1234,结果,结果i的值为的值为123 输入输入 123

10、4,结果,结果i的值为的值为1234为了更清楚地了解scanf()函数的用法,须知以下几点:如:如:scanf(”%d, %d”, &a,&b)加上加上“&”,表示,表示变量变量a和和b的地址的地址这个,输入时,必须加上这个,输入时,必须加上逗号,才能保证正确逗号,才能保证正确如:如:scanf(”%4d”,&i); 输入输入12345,结果,结果i的值为的值为1234(因为指定域宽为(因为指定域宽为4) 输入输入12345,结果,结果i的值为的值为123(因为遇见空白字符)(因为遇见空白字符)1. scanf格式控制中的普通字符必须按原样格式控制中的普通字符必

11、须按原样输入,地址列表中必须为地址,在变量输入,地址列表中必须为地址,在变量前加上前加上“取地址运算符取地址运算符”2. 读取数据的时候是以指定域宽或者第一读取数据的时候是以指定域宽或者第一个空白字符处为终止(最先达到者)个空白字符处为终止(最先达到者)3. 若第一个或前几个连续为空白字符、制若第一个或前几个连续为空白字符、制表符和换行符,都将跳过这些字符表符和换行符,都将跳过这些字符4. 注意注意%s格式说明符的用法格式说明符的用法要点深度解析:要点深度解析:结合要点结合要点1,了解地址的含义,了解地址的含义 结合要点结合要点2、3,分析多数据输入情况,分析多数据输入情况 结合要点结合要点4

12、,掌握,掌握%s的用法的用法3.2 程序流程图 流程图是用一些图框来表示各种操作。用流程图来表示算法,直观形象,易于理解。美国国家标准化协会ANSI规定了一些常用的流程图符号。菱形框菱形框,是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口连接点连接点,是用于将画在不同地方的流程线连接起来。在流程图中,编号相同的连接点表示这些点是互相连接在一起的注释框注释框,不是流程图中的必要部分,不反应流程和操作,只是为了对流程图中某些框的操作作必要的补充说明,以便于人们更好的理解流程图例:求一数值的绝对值。数学分析:若此数值本身就不小于0,就是其本身,反之,

13、为其相反数。?0 x输出输出X输出输出 -xX满足条件满足条件不满足条件不满足条件流程图表示:流程图表示:三种基本结构:三种基本结构:1.顺序结构,流程图表示如下:顺序结构,流程图表示如下: 执行完执行完A框指定的操作后接着执行框指定的操作后接着执行B框所指定的框所指定的操作。顺序结构是最简单的一种基本结构。操作。顺序结构是最简单的一种基本结构。2.选择结构,流程图表示如下:选择结构,流程图表示如下: 此结构中必须包含一个判断框,根据给定的条件此结构中必须包含一个判断框,根据给定的条件p是否成立来选择执行是否成立来选择执行A框还是框还是B框中所指定的操作。框中所指定的操作。无论无论p条件是否成

14、立,只能执行条件是否成立,只能执行A框或者框或者B框之一,两框之一,两者不可能同时执行。者不可能同时执行。A框或者框或者B框有一个可以是空的,框有一个可以是空的,不执行任何操作不执行任何操作3.循环结构,流程图表示如下:循环结构,流程图表示如下: 当(当(while)型循环结构。其功能是:当给定的条件)型循环结构。其功能是:当给定的条件p1成立时,执行成立时,执行A框操作,执行完框操作,执行完A后,再判断条件后,再判断条件p1是否成是否成立,如果仍然成立,再执行立,如果仍然成立,再执行A框,如此反复执行框,如此反复执行A框,直到框,直到某一次条件某一次条件p1不成立为止,此时不执行不成立为止,

15、此时不执行A框,从框,从b点脱离循点脱离循环结构环结构 直到(直到(until)型循环结构。其功能是:先执行)型循环结构。其功能是:先执行A框,框,然后判断给定的条件然后判断给定的条件p2是否成立,如果是否成立,如果p2条件不成立,则条件不成立,则再执行再执行A,然后再对,然后再对p2条件作判断,如果条件作判断,如果p2条件仍然不成条件仍然不成立,又执行立,又执行A如此反复执行如此反复执行A,直到给定的条件,直到给定的条件p2成立成立为止,此时不再执行为止,此时不再执行A,从,从b点脱离循环结构点脱离循环结构3.3顺序结构程序设计 算术运算符 算术表达式 赋值表达式例:求一元二次方程的两根。例

16、:求一元二次方程的两根。运行结果:运行结果: 从主函数入口开始执行,定义变量,输入数从主函数入口开始执行,定义变量,输入数值,求解方程的解,这都是按照代码的一步一步值,求解方程的解,这都是按照代码的一步一步往下实现的。往下实现的。3.3.1算术运算符5种基本运算符:种基本运算符:1). + (加法或者正直运算符加法或者正直运算符)2). (减法或者负值运算符减法或者负值运算符)3). * (乘法运算符乘法运算符)4)./ (除法运算符除法运算符)5).%(求余运算符求余运算符)注意:注意: 加法和减法运算符同于数学上加法和减法运算符同于数学上 乘法在乘法在c语言中用语言中用“*”,而不用,而不

17、用“” 除法在除法在c语言中是语言中是“/”,而不用,而不用“” 使用使用“/”时,若除数和被除数都为整数,则商也时,若除数和被除数都为整数,则商也是整数,若参与运算的有负数,是整数,若参与运算的有负数,3.3.2算术表达式算术表达式 即用算术运算符和括号将运算对象连接起来,符合C语法规则的式子算术运算时是按照优先级进行的,若优先级相同,则按照结合方向进行计算,并且每一个表达式都会有一个确定的值。3.3.3赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。其一般形式为:变量变量赋值运算符赋值运算符表达式表达式计算过程是:先计算赋值运算符右侧的“表达式”的值,然后将这个值

18、赋值给左边的变量。多个赋值表达式共存则按结合性“自右而左”进行一步一步分别赋值。常用的复合赋值运算符常用的复合赋值运算符a+=y等价于a=a+yb=y等价于b=byc*=y等价于c=c*yd/=y等价于d=d/ye%=y等价于e=e%yy可以是常量、变量以及复杂的表达式赋值运算符赋值运算符“=”之前加上其他运算之前加上其他运算符,就构成复合赋值运算符。符,就构成复合赋值运算符。 编写程序:编写程序:从键盘上输入三角形的三边,根据从键盘上输入三角形的三边,根据下面的公式求出三角形的面积下面的公式求出三角形的面积area。假设输入假设输入a、b和和c三边的边长能够组成一个三角形。三边的边长能够组成

19、一个三角形。)()(csbsassarea程序为:程序为:3.4 选择结构程序设计 关系运算符和关系表达式 逻辑运算符和逻辑表达式 if语句与switch例:一元二次方程根的情况。例:一元二次方程根的情况。运行结果:运行结果: 此程序就体现了,根据不同的情况,有此程序就体现了,根据不同的情况,有不同的结果,就达到了一种选择的目的。不同的结果,就达到了一种选择的目的。3.4.1关系运算符和关系表达式关系运算符关系运算符运算符含义小于大于=大于或等于=等于!=不等于算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符算术运算符:算术运算符: * / %关系运算符:关系运算符: = 算术运算

20、负算术运算负关系运算符关系运算符逻辑运算符逻辑运算符&与与|为双目运算符,需要两个运算量为双目运算符,需要两个运算量!为单目运算符,只需要一个!为单目运算符,只需要一个 逻辑表达式:由逻辑运算符连接两个数,进行逻辑运算的式子。 表达式结果:“真”“假”逻辑量:参与逻辑运算的量逻辑值:逻辑量、逻辑表达式的运算结果任何非“0”的逻辑量的逻辑值都为真写出下面各逻辑表达式的值。设a=3,b=4,c=5;1. a+bc&b=c2. a|b+c&b-c3. ! (ab)&! c|14. ! (x=a)&(y=b)&05. ! (a+b)+c-1&b+

21、c/21.02.13.14.05.13.4.3 if语句与switch语句if,英语中其义有“如果”的意思。那么就来研究C语言中的“如果”。1.if语句格式 :if(表达式)语句组;流程图:流程图: 如果表达式的值为真,就语句组中的如果表达式的值为真,就语句组中的语句语句;如果不为真,就执行语句组后的语句如果不为真,就执行语句组后的语句表达式语句组真假2.在在if语句中添加语句中添加else子句子句格式 :if(表达式) 语句组1; else语句组2;如果表达式的值为真,就执行语句组1;如果不为真,就执行语句组2。流程图:流程图: 表达式语句组1语句组2真假3.多重选择else if格式:if

22、(表达式1)语句组1;else if(表达式2)语句组2;else if(表达式3)语句组3;else语句组n;表达式1语句组1真假表达式2表达式3语句组n语句组3语句组2假假真真流程图:流程图: 当表达式当表达式1为真的时候则执行语句组为真的时候则执行语句组1,否则的话,将,否则的话,将判断表达式判断表达式2的真假,表达式的真假,表达式2为真,则执行语句组为真,则执行语句组2依依次这样判断。次这样判断。4.if语句的嵌套在if语句的语句组中又包含一个或多个if语句称为if语句的嵌套如:if(表达式1)if(表达式2)语句组; if的多重嵌套时,得注意if和else的搭配,写法要得当! if语

23、句实现多分支时,需要嵌套的if语句层数较多,程序冗长,可读性低。因此可用switch语句来处理多分支情况。 switch(表达式表达式)case 常量表达式常量表达式1:语句组:语句组1;case 常量表达式常量表达式2:语句组:语句组2;case 常量表达式常量表达式n:语句组:语句组n;default: 语句组语句组n+1;switch说明:说明:switch括号内的表达式任意,值和哪个case后的常量表达式匹配,就执行后面的语句,没有匹配的,就执行default后面的,default可省略。每个case后常量表达式的值必须不一样,case和default的顺序不影响结果。执行完一个cas

24、e后,程序流程转移到下一个case,直到运行完全或遇见break语句,并非直接跳出。多个case可以共用一个执行语句。例:例:输入两个实数,按照代数值由小到大的顺序输出这两个数。满足满足if条件就条件就交换交换a,b的值的值例:输入三个实数,编程找出其中最大例:输入三个实数,编程找出其中最大的一个并输出的一个并输出探究唯一的三目运算符探究唯一的三目运算符三目运算符一般形式:表达式表达式1?表达式?表达式2:表达式:表达式3 其执行顺序为:先求解表达式1,若为真(非0),则求解表达式2,并把表达式2的值作为整个条件表达式的值。若表达式1为假(0),则求解表达式3,并把表达式3的值作为整个条件表达

25、式的值。注意点:注意点:1. 条件运算符的优先级别高于赋值运算符,条件运算符的优先级别高于赋值运算符,但是比关系运算符和算术运算符要低。但是比关系运算符和算术运算符要低。2. 条件运算符的结合方向为条件运算符的结合方向为“自右向左自右向左”3. 条件表达式中的表达式条件表达式中的表达式2和表达式和表达式3可以是可以是任意的表达式。表达式任意的表达式。表达式1与表达式与表达式2和表达和表达式式3的类型也可以不同。的类型也可以不同。编写程序:10113101121xxxxxxy 编写一程序,从键盘上输入x的值,根据上面的函数,求出y的值。语句组中只有一句,花括号可以省略。语句组中只有一句,花括号可

26、以省略。3.5循环结构程序设计 while循环与自增自减运算符 dowhile语句 for语句 逗号运算符和逗号表达式3.5.1 while循环与自增自减while语句用来实现“当型”循环结构。其一般形式:while(表达式)语句组;在语句组中必须包含能改变表达式的值来使表达式的值最终变为假,否则循环永远不会中止例:使用例:使用while循环来求循环来求“1+2+3+100”的值的值运行结果:运行结果:循环条件循环条件i为循环变量为循环变量循环变量增值循环变量增值循环体循环体i=1i100sum+=ii+真真假假流程图如下:流程图如下:循环变量初始化循环变量初始化i=1判断表达式判断表达式i

27、100是否成立是否成立u成立就执行循环体成立就执行循环体u不成立就执行循环体后不成立就执行循环体后面的语句面的语句(循环体未执行循环体未执行)执行循环体后,就再从第一执行循环体后,就再从第一步往下进行判断,直至为假步往下进行判断,直至为假就退出循环就退出循环循环体循环体i+使使i每次增每次增1sum+=i进行累加进行累加自增运算符“+”,其作用使变量的值增1.与其相对的还有自减运算符“-”,其作用使变量的值减1。自增自减运算符为单目运算符,所以仅需1个变量。注意,自增自减只能用于变量,不能用于常量或表达式自增、自减运算符的使用有两种方式:前缀模式:前缀模式:+变量,变量,-变量。变量。(在使用

28、变量之前,先使变量的值加(减)1)后缀模式:变量后缀模式:变量+,变量,变量-。(在使用变量之后,使变量的值加(减)1)在用自增、自减运算符时,易使表达式产生不正确的地方,尽量不用3.5.2 dowhile语句 dowhile循环先执行循环体语句,然后再判断while后面的条件是否成立。当表达式为真,则返回重新执行循环体语句,如此反复,直到while后面的表达式为假才结束循环一般形式为:do循环体语句组;循环体语句组;while(表达式表达式);此处分号一此处分号一定不能少定不能少用用while和和dowhile分别求分别求1到到100的累加和的累加和while循环循环dowhile循环循环对

29、比:对比:while循环先判断条件,成立则执行循环体,不循环先判断条件,成立则执行循环体,不成立执行其后语句;而成立执行其后语句;而dowhile循环先执行一次循环循环先执行一次循环体后判断条件,成立则再执行循环体,不成立,退出循体后判断条件,成立则再执行循环体,不成立,退出循环。所以环。所以dowhile至少执行一次循环体至少执行一次循环体3.5.3 for语句C语言中的for语句是使用最为灵活的语句,其一般形式如下:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体语句组;循环体语句组;当循环体语句组只有一句时,花括号可以省略。for循环的执行过程:循环的执行过程:求解表达式求解表达式1;求解表达式求解表达式2,如果为真,则执行循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论