C语言第3章C程序的基本控制结构_第1页
C语言第3章C程序的基本控制结构_第2页
C语言第3章C程序的基本控制结构_第3页
C语言第3章C程序的基本控制结构_第4页
C语言第3章C程序的基本控制结构_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3 3章章 C C程序的基本控制结构程序的基本控制结构 第第3章章 C程序的基本控制结构程序的基本控制结构 3.1 顺序结构顺序结构 3.2 选择结构选择结构 3.3 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 学习目标学习目标 (1)掌握)掌握C语言语句的分类。语言语句的分类。 (2)理解三种程序控制结构的流程图。)理解三种程序控制结构的流程图。 (3)掌握各种类型数据的格式化输入)掌握各种类型数据的格式化输入/输出方法。输出方法。 (4)掌握字符数据的非格式化输入)掌握字符数据的非格式化输入/输出方法。输出方法。 (5)理解选择结构的含义;掌握)理解选

2、择结构的含义;掌握if、switch语句的使用方法。语句的使用方法。 (6)掌握关系运算符、逻辑运算符和条件运算符的用法;运)掌握关系运算符、逻辑运算符和条件运算符的用法;运 算符的优先级关系和结合性。算符的优先级关系和结合性。 (7)理解循环结构的含义;掌握不同循环结构的选择及其转)理解循环结构的含义;掌握不同循环结构的选择及其转 换方法;掌握混合控制结构程序设计的方法。换方法;掌握混合控制结构程序设计的方法。 (8)掌握)掌握C语言三种循环结构的特点;掌握语言三种循环结构的特点;掌握while、do- while、for、break、continue语句的使用方法。语句的使用方法。 第第3

3、 3章章 C C程序的基本控制结构程序的基本控制结构 程序设计语言有顺序、选择、循环三种基本程序设计语言有顺序、选择、循环三种基本 的控制结构。的控制结构。 1用流程图表示用流程图表示 (1)顺序结构)顺序结构 表示先执行表示先执行A,再执行,再执行B。 B A a b 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (2)选择结构)选择结构 如果如果P条件成立,执行条件成立,执行A,否则执行,否则执行B,然后转向,然后转向 后面的语句。后面的语句。 a b a b 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (3)循环结构)循环结构 有两种形式。有两种形式。 wh

4、ile 结构(当型循环)结构(当型循环) 表示先判断条件表达式表示先判断条件表达式P,当,当P成立,即为成立,即为“真真”, 反复执行循环体反复执行循环体A;直到;直到P不成立,即为不成立,即为“假假”,转向其,转向其 后面的语句。后面的语句。 注意:注意: 如果如果P一开始就不成立,一开始就不成立, 则则A一次也不执行,一次也不执行, 直接转到下一条语句。直接转到下一条语句。 a b 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 do-while结构(直到型循环)结构(直到型循环) 先执行循环体语句先执行循环体语句A ,然后判断条件表达式,然后判断条件表达式P。 注意:注意:

5、不管条件不管条件P 成立与否,循成立与否,循 环体环体A至少执行一次。至少执行一次。 a b 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 三种基本结构的共同特点三种基本结构的共同特点 只有一个入口;只有一个入口; 只有一个出口;只有一个出口; 结构内的每一部分都有可能被执行到;结构内的每一部分都有可能被执行到; 结构内不存在结构内不存在“死循环死循环”。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.1 C程序的语句程序的语句 C语言的语句可分为以下四类:语言的语句可分为以下四类: l表达式语句表达式语句 l函数调用语句函数调用语句 l控制语句控制语句 l

6、复合语句复合语句 l空语句空语句 简单语句简单语句 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1. 表达式语句表达式语句 由一个表达式加上一个分号构成。其一般形式为:由一个表达式加上一个分号构成。其一般形式为: 表达式;表达式; 如:如: x=y+z; y+z; i+; 2. 函数调用语句函数调用语句 由函数调用表达式加分号构成由函数调用表达式加分号构成. 如:如: printf(“C Program”); scanf(“%d”, 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.控制语句控制语句 用于控制程序的流程,用于控制程序的流程, 以实现程序的各种结构方

7、式。以实现程序的各种结构方式。 语言有九种控制语句语言有九种控制语句, 可分成以下三类。可分成以下三类。 (1) 条件判断语句:条件判断语句:if语句,语句,switch语句。语句。 (2) 循环执行语句:循环执行语句:do while语句,语句,while语句,语句,for 语句。语句。 (3) 转向语句:转向语句:break语句,语句,goto语句,语句,continue语语 句,句,return语句。语句。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4. 4. 复合语句复合语句 把多个语句用大括号括起来组成的一个语句把多个语句用大括号括起来组成的一个语句 称复合语句。称

8、复合语句。 例如:例如: 花括号中的语句,可以是简单花括号中的语句,可以是简单 语句、空语句、复合语句、流程控语句、空语句、复合语句、流程控 制语句,所有这些语句括在一起,制语句,所有这些语句括在一起, 在语法上看成是一条语句,执行时在语法上看成是一条语句,执行时 顺序执行花括号中的每条语句。复顺序执行花括号中的每条语句。复 合语句多用于流程控制语句中。合语句多用于流程控制语句中。 x=y+z; a=b+c; printf(“%d%d”,x,a); 复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;”结尾,结尾, 在括号在括号“”外不能加分号。外不能加分号。 第第3 3章章

9、C C程序的基本控制结构程序的基本控制结构 5.空语句空语句 只有分号组成的语句称为空语句。只有分号组成的语句称为空语句。 例如:例如: while(getchar()!=n) ; 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.2 数据输出函数数据输出函数printf() 和和putchar 一一printf()函数(格式输出函数)函数(格式输出函数) 1.调用的一般形式调用的一般形式 printf(“格式控制字符串格式控制字符串”,输出表列输出表列) 其中格式控制字符串用于指定输出格式。格式控制串可由其中格式控制字符串用于指定输出格式。格式控制串可由 格式字符串和非格式

10、字符串两种组成。格式字符串是以格式字符串和非格式字符串两种组成。格式字符串是以%开开 头的字符串,在头的字符串,在%后面跟有各种格式字符,以说明输出数据后面跟有各种格式字符,以说明输出数据 的类型、形式、长度、小数位数等。的类型、形式、长度、小数位数等。 可以是常量、可以是常量、 变量、表达式变量、表达式 格式字符格式字符 转义字符转义字符 普通字符普通字符 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 【练一练】 void main() int a=88,b=89; printf(%d %dn,a,b); printf(%d,%dn,a,b); printf(%c,%cn,a,

11、b); printf(a=%d,b=%dn ,a,b); 程序运行输出结果: 88 89 88,89 X,Y a=88,b=89 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2格式字符串格式字符串 格式字符串的一般形式为:格式字符串的一般形式为: 3.1 3.1 顺序结构顺序结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符(格式转换说明符(格式字符格式字符)功功能能 %c 输出一个字符输出一个字符 %d 输出十进制整数,按实际位数输出输出十进制整数,按实际位数输出 %f 定点格式输出浮点数,整数部分取实际位数,小数部分保留定点格式输出浮点数,整数

12、部分取实际位数,小数部分保留6位位 %e 指数格式指数格式-m.ddddde+nn输出浮点数输出浮点数 %g 选择选择 %f和和%e格式中,输出宽度较小的一种格式中,输出宽度较小的一种 %s输出字符串,按实际位数输出输出字符串,按实际位数输出 %u输出十进制无符号整数,按实际位数输出输出十进制无符号整数,按实际位数输出 %o输出八进制无符号整数,按实际位数输出输出八进制无符号整数,按实际位数输出 %x输出十六进制无符号整数,按实际位数输出输出十六进制无符号整数,按实际位数输出 %输出一个输出一个% %p输出指针值输出指针值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 对于格式转

13、换说明符可以进行以下三类修饰:对于格式转换说明符可以进行以下三类修饰: 1. 1. 指定字段宽度指定字段宽度 (1) %m.nd 其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出最小有效位数。规定输出最小有效位数。 例如,例如, printf(“%3d,%6d,%6.5dn”,1234,1234,1234); 输出结果为输出结果为 1234, 1234, 01234 (2) %m.nf 其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出小数位数。规定输出小数位数。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如, p

14、rintf(“%10f,%10.2f,%.2fn”,123.456,123.456,123.4); 输出结果为输出结果为 123.456000, 123.46,123.40 (3) %m.ne 其中:其中:m 规定输出最小宽度;(规定输出最小宽度;(n-1)为尾数部分的小数位数。)为尾数部分的小数位数。 例如,例如, printf(“%10e,%10.4e,%.3en”,123.456,123.456,123.4); 输出结果为输出结果为 1.23456e+02, 1.235e+02,1.23e+02 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:注意: (1) 无论是无论

15、是 %m.nf %m.nf 还是还是 %m.ne %m.ne 格式,对舍去的小数最高格式,对舍去的小数最高 位都四舍五入。位都四舍五入。 例如,例如, printf(“%04d,%010.2f,%010.3en”,125,12.3,123.5);printf(“%04d,%010.2f,%010.3en”,125,12.3,123.5); 输出结果为:输出结果为: 0125,0000012.30,001.24e+020125,0000012.30,001.24e+02 (2) 对以上三种情况,如果在对以上三种情况,如果在“%”%”和和 m.n m.n 之间加一个之间加一个 0 0, 则在规定字

16、段宽度内左边多余的空位以则在规定字段宽度内左边多余的空位以 0 0 来填充,而不来填充,而不 是空格。是空格。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (4) %m.ns 2. 2. 左对齐左对齐 如果在如果在“%”之后加一个负号(即之后加一个负号(即“-”),则在规定的宽度),则在规定的宽度 内输出内容向左对齐,右面补空格或内输出内容向左对齐,右面补空格或“0”。 例如,例如, printf(“%3s,%15s,%10.5s,%.4sn”,”China”,”Beijing”, ”Beijing”,”China”); 其中:其中:m 的含义与前面相同;的含义与前面相同;n

17、规定截取输出字符串左面的字符规定截取输出字符串左面的字符 个数,字符串长度小于个数,字符串长度小于 n 时,按实际长度输出(时,按实际长度输出(n不起作用)。不起作用)。 输出结果为输出结果为 China, Beijing, Beiji,Chin 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如, printf(“%-3d,%-6d,%-6.5dn”,1234,1234,1234); printf(“%-10f,%-10.2f,%-.2fn”,123.456,123.456,123.4); printf(“%-3s,%-15s,%-10.5s,%-.4sn”, ”Chin

18、a”,”Beijing”, ”Beijing”,”China”); 输出结果为输出结果为 1234,1234 , 01234 123.456000,23.46 ,123.40 China, Beijing , Beiji ,Chin 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3. 3. 类型修饰类型修饰 (2) 在类型说明符在类型说明符 f、e、g 前面可以加字母前面可以加字母 l,表示输出,表示输出 double 型数据。型数据。 (1) 在类型说明符在类型说明符 d、u、o、x、i 前面可以加字母前面可以加字母“l”或或“h”,分别表,分别表 示输出示输出 long 或或

19、 short 型的数据。型的数据。 例如,例如, printf(“%d,%ldn”,7000,70000l,); 例如,例如, printf(“%15.8lf,%16.9len”,12.34567889,12.34567889); 输出结果为输出结果为 12.34567889, 1.234567889e+01 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于格式输出的几点说明:关于格式输出的几点说明: -1和和65535 例如,例如, printf(“%d,%u,%o,%xn”,-1,-1,-1,-1); printf(“%d,%u,%o,%xn”,65534u,65534u,

20、65534u,65534u); (1)对于任何一种形式的整数都可以用)对于任何一种形式的整数都可以用 d、i、o、u、x(或(或 “X”)格式输出,其中)格式输出,其中 d、 i 输出带符号十进制形式,而输出带符号十进制形式,而 u、o、x格格 式输出无符号整数。式输出无符号整数。 输出结果为输出结果为 -1,65535,177777,ffff -2,65534,177776,fffe -2和和65534 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 假设一个基本整假设一个基本整 型数据在内存占型数据在内存占 2

21、B 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (2)如果)如果 printf( ) 函数中有多个表达式时,不同系统求值顺序不函数中有多个表达式时,不同系统求值顺序不 同。同。Turbo C 系统的求值顺序是自右至左的。系统的求值顺序是自右至左的。而而Visual C+6.0在从右在从右 到左进行时,还按运算符不同分批运算。到左进行时,还按运算符不同分批运算。 例如,例如, printf(“%d,%d,%dn”,2+3,3*4,6/2); void main() int i=8; printf(%dn,+i); printf(%dn,-i); printf(%dn,i-); p

22、rintf(%dn,i+); printf(%dn,-i-); 例例3-1 printf函数输出表列中的求值顺序函数输出表列中的求值顺序 运行输出结果:运行输出结果: 9 8 8 7 -8 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 void main() int i=8; printf(%dn%dn%dn%dn%dn,+i,-i,i-,i+,-i-); Turbo C中的结果:中的结果: 7 6 8 7 -8 Visual C+6.0中的结果中的结果 8 7 8 8 -8 因为不同的系统对这种问题的处理方式采用不同的规则。所以,应该因为不同的系统对这种问题的处理方式采用不同的

23、规则。所以,应该 尽可能在尽可能在printf语句内输出变量的值,不建议输出表达式的值。语句内输出变量的值,不建议输出表达式的值。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-2:使用:使用printf函数输出如下信息:函数输出如下信息: * 好好学习,天天向上 * #include void main() printf(“*n”); printf( 好好学习,天天向上好好学习,天天向上n); printf(*n); 输出结果: * 好好学习,天天向上好好学习,天天向上 * 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-3:使用:使用printf函

24、数输出如下信息:函数输出如下信息: 姓名 外语 数学 王丽 60 70 程序: #include void main() printf(姓名t外语t数学n); printf(“王丽t60t70n”); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 二字符输出函数二字符输出函数putchar() 一般调用形式为:一般调用形式为: putchar(字符参数字符参数) 其功能是在显示器上输出单个字符。其功能是在显示器上输出单个字符。 例如:设例如:设char x=B;int i=66; lputchar(A); 输出大写字母输出大写字母A lputchar(x); 输出字符变量输出字符

25、变量x的值字母的值字母B lputchar(101);输出字符;输出字符A lputchar(n);换行;换行 lputchar(65);输出大写字母;输出大写字母A lputchar(i); 输出变量输出变量i的值为的值为ASCII码的字母码的字母B 字符型常量、变量字符型常量、变量 或整型常量、变量或整型常量、变量 注意:使用本函数前必须要用文件包含命令:注意:使用本函数前必须要用文件包含命令: #include 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.3数据输入函数数据输入函数scanf()和和getchar 一一 scanf函数(格式输入函数)函数(格式输入

26、函数) 一般调用形式一般调用形式 scanf(“输入格式控制串输入格式控制串”,输入变量地址清单输入变量地址清单); 格式转换说明符格式转换说明符 其他字符其他字符 例如,例如, int k ; float x; char ch; scanf(“%d,%f,%c”, 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符格式转换说明符功功能能 %c 输入一个字符输入一个字符 %d 输入十进制整数输入十进制整数 %f 输入浮点数,不能指定小数位数输入浮点数,不能指定小数位数 %e 输入浮点数,不能指定小数位数输入浮点数,不能指定小数位数 %s输入字符串,遇空格、制表符或回车符

27、结束输入字符串,遇空格、制表符或回车符结束 %u输入十进制无符号整数输入十进制无符号整数 %o输入八进制无符号整数输入八进制无符号整数 %x输入十六进制无符号整数输入十六进制无符号整数 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于关于 scanf( ) 函数使用的几点说明:函数使用的几点说明: 1 1 输入数据的分隔符输入数据的分隔符:空格、制表符或回车键:空格、制表符或回车键 例如,例如, scanf(“%d%d%d”, 输入形式可以是:输入形式可以是: 3 4 5 3 4 5 3 4 5 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2 2 输入数据类型输

28、入数据类型 1) 输入长整型数据时,可以用输入长整型数据时,可以用 %ld、%lo、%lx 或或%lu, , 而且用整型格式控制整型变量输入时,从键盘输入的必须是整而且用整型格式控制整型变量输入时,从键盘输入的必须是整 数。数。 例如,例如, scanf(“%d%d”, 如果输入如果输入 12 .56 23 结果结果 a=12,而变量,而变量 b 没有得到值。没有得到值。 2)当用)当用%f 或或%e 格式控制格式控制float和和double型变量的输入时,输入型变量的输入时,输入 的数据可以是小数形式、指数形式或整数。不能指定小数位数。的数据可以是小数形式、指数形式或整数。不能指定小数位数

29、。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3)对于用)对于用%c 格式输入格式输入 char 型数据时,不需加单引号。如型数据时,不需加单引号。如 果连续输入多个字符时,不需要使用分隔符。果连续输入多个字符时,不需要使用分隔符。 例如,例如, scanf(“%c%c%c”, 如输入如输入 ABC 则有则有 c1=A,c2=B,c3=C 而如输入而如输入 A B C 则有则有 c1=A,c2= ,c3=B 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4. 4. 限制输入数据的宽度(限制输入数据的宽度(“m”m”) 例如,例如, scanf(“%5d%4d%4

30、d”, scanf(“%10s”,str); 如果输入如果输入 1234567890 good morning 则各变量的值:则各变量的值:a=12345,b=6789,c=0 字符型数组字符型数组 str 得到的值是得到的值是“good” 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 二二getchar()函数函数 一般形式为: getchar() 功能:是从键盘上输入一个字符。 通常把输入的字符赋予一个字符变量,构成赋值语句,如:通常把输入的字符赋予一个字符变量,构成赋值语句,如: #include void main() char c; printf(input a cha

31、ractern); c=getchar(); putchar(c); 注意:使用本函数前必须要用文件包含命令:注意:使用本函数前必须要用文件包含命令: #include 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.4顺序结构程序举例顺序结构程序举例 例3-1:编写程序,要求输入以华氏度表示的温度值,输 出以摄氏度表示的温度值。 【提示】表示温度的单位有两种:摄氏度和华氏度。由华 氏度转换为摄氏度的转换公式为: C=5/9(F-32) 其中C代表摄氏度,F代表华氏度。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 测试(运行)测试(运行) 输入华氏温度输入华

32、氏温度: 75.5 摄氏温度为:摄氏温度为:24.2C 程序如下:程序如下: #include void main() float f,c; printf(输入华氏温度输入华氏温度:n); scanf(%f, c=5.0/9.0*(f-32); printf(摄氏温度为:摄氏温度为:%5.1fCn,c); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.5 常见错误(自修)常见错误(自修) 3.2.1关系运算关系运算 1. 关系运算符关系运算符 运算符含 义运算级别结合性 小于 优先级相同 (高) 左结合 大于 =大于或等于 = =等于 优先级相同 !=不等于(低) 3.2

33、 3.2 选择结构选择结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2. 关系表达式关系表达式 用关系运算符将两个表达式连接起来所构成的表达式。 一般形式为: 关系表达式的值关系表达式的值: “真”和“假”两种,分别用“1”和“0” 表示。 例如,例如,设有定义:int a=3,b=4,c=5,d=6,i=-8,j=1,k=2,x=0; 计算下列各表达式的值 。 a+bc-d x3/2 a+1(bc) a!=(c=d) abc 1 0 0 1 1 1 0 3.2.2逻辑运算逻辑运算 1. 逻辑运算符逻辑运算符 语言中提供了三种逻辑运算符语言中提供了三种逻辑运算符 。 逻辑运

34、算符含 义运算级别结合性 !逻辑非(高)右结合 float b=3.5; !a ( ) !(a b) ( ) a int max; printf(n 请输入两个数: ); scanf(%d%d, if(ab) /* 判断表达式 */ max=a; /* 语句1 */ else max=b; /* 语句2 */ printf(max=%dn,max); 请输入两个数:8 9 max=9 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.3 if语句和条件运算符语句和条件运算符 省略省略else分支的分支的if语句语句 一般形式: if(表达式表达式) 语句语句1 或 if(表达

35、式表达式) 语句语句1 功能:如果表达式的值为真, 则执行其后的“语句1”, 否则不执行“语句1”。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例 输入两个整数,求最大数。 #include void main() /* 主函数 */ int a,b; int max; printf(n 请输入两个数: ); scanf(%d%d, max=a; if(maxb) /* 判断表达式 */ max=b; /* 语句1 */ printf(max=%dn,max); 请输入两个数:8 9 max=9 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include v

36、oid main() int a,b,t; scanf(“%d,%d ”, if (a b ) t = a; a = b; b = t; printf(“Result: %d, %d”, a,b ); 例例3-5:输入两个整数,按从小到大顺序输出。:输入两个整数,按从小到大顺序输出。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2 if-else-if形式(当有多个分支选择时采用)形式(当有多个分支选择时采用) 一般形式为: if(表达式表达式1) 语句语句1 else if(表达式表达式2) 语句语句2 else if(表达式表达式3) 语句语句3 else if(表达式表达

37、式n) 语句语句n else 语句语句n+1 执行流程如下图所示:执行流程如下图所示: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 功能:依次判断表达式的值,当出现某个值为真时,则 执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n+1。然后继续执行 后续程序。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例 从键盘输入任意字符,根据其从键盘输入任意字符,根据其ASCII码来判别属于哪类码来判别属于哪类 字符。字符。 #includestdio.h void main() char c; printf(input a

38、 character: ); c=getchar(); if(c=0 scanf(“%f”, if ( score=90) printf(“%c” , A); else if ( score =80) printf(“%c” , B); else if (score =70) printf(“%c” , C); else if (score =60) printf(“%c” , D); else printf(“%c” , E); 程序如下:程序如下: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3 选择结构的嵌套。 if ( 表达式表达式1) if ( 表达式表达式2) 语句

39、语句1 else 语句语句2 else if ( 表达式表达式3) 语句语句3 else 语句语句4 表达式表达式2 表达式表达式1 表达式表达式3 语句语句1语句语句2语句语句3 语句语句4 非00 0 非00 非0 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2条件运算符和条件表达式条件运算符和条件表达式 条件运算符 ? : 它是一个三目运算符。 条件表达式形式为: 表达式表达式1?表达式表达式2:表达式表达式3 功能功能:如果表达式1的值为真,则以表达式2 的值作为条件表 达式的值,否则以表达式3的值作为整个条件表达式的值。 优先级优先级:仅高于逗号和赋值运算。 结合性结

40、合性:右结合的。 例如: max=ab?a:b 相当于 max=(ab?a:b) ab?a:cd?c:d 相当于 ab?a:(cd?c:d) if(ab) max=a; else max=b; max=(ab)?a:b; 等价于 表达式表达式1 取表达式取表达式2的值的值 作为整个表达式作为整个表达式 的值的值 非00 取表达式取表达式3的值作的值作 为整个表达式的为整个表达式的 值值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); 例 考虑下面程序的输出结果: #include

41、main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! 3在使用在使用if语句中应注意的问题语句中应注意的问题 l语句可以是复合语句 lif后面的表达式类型任意 if(x) if(x!=0) if(!x) if(x=0) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 缺省缺省 时,时,else总是和它上面离它最近的未配对的总是和它上面离它最近的未配对的if配对配对 if() if() if() else. else. else. lif el

42、se 配对原则:配对原则: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 实现if else 正确配对方法 例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现实现if else 正确配对方法:加正确配对方法:加 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.4 switch语句语句 一般形式为:一般形式为: switch(表达式表达式E) case E1: 语句组

43、语句组1; break; case E2: 语句组语句组2; break; case En: 语句组语句组n; break; default: 语句组语句组n+1; E1En常量常量 表达式表达式 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意: lE1,E2,En是常量表达式,且值必须互不相同。 l语句标号作用, case后可包含多个可执行语句,且不必加 ,必须用break跳出。 ldefault可以缺省,在这种情况下,如果没有成功的匹配, 则程序什么都不执行,直接退出switch。 lbreak语句也可以缺省,程序流程如图3-14所示。 l多个case可共用一组执行语句

44、如:如: case A: case B: case C: printf(“score60n”); break; . 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 缺省全部缺省全部break语句后,语句后, switch语句的执行流程:语句的执行流程: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-7 要求输入某学生的成绩,经处理后给出学生的等级,等级 分类如下: 90分以上(包括90):A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E 分析: 设score为整型数,利用两个整数相除,结果自动取整的

45、特性,score和 score /10 有如下对应关系: score score/10 90以上 10, 9 7089 7 , 8 6069 6 60以下 5,4,3,2,1,0 因此,可以用score /10的值来确定分支。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include void main() int score; char ch; printf(ninput a students grade:); scanf(%d, if(score100) printf(ninput error!n); else switch (score/10) case 10: ca

46、se 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(nthe students scort:%cn,ch); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.5选择结构程序举例选择结构程序举例 例例3-8 下面程序的功能是将一个下面程序的功能是将一个50000以内的正整数逆序以内的正整数逆序 输出。例如输入输出。例如输入1234,输出,输出4321 程序如下: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构

47、#include main() int a,b,c; int n; printf(Please input an integer(0 and =10000)n=5; else if(a=1000) n=4; else if(a=100)n=3; else if(a=10)n=2; else n=1; b=0; switch(n) case 5: c=a%10; a/=10; b=b*10+c; case 4: c=a%10; a/=10; b=b*10+c; case 3: c=a%10; a/=10; b=b*10+c; case 2: c=a%10; a/=10; b=b*10+c; ca

48、se 1: c=a%10; a/=10; b=b*10+c; printf(Result: %d.n, b); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.6 常见错误常见错误(自修自修) 1. 把关系运算符把关系运算符“=”误写为赋值运算符误写为赋值运算符“=” 比较两个数的大小关系。比较两个数的大小关系。 x=3;y=4; if(x=y) printf(x=yn); l运行状态:正常运行,但没有得到预期结果。运行状态:正常运行,但没有得到预期结果。 l原因:原因:if(x=y)中中x=y是赋值表达式,其是赋值表达式,其x=4。x=y赋值表达赋值表达 式的值也是式的值

49、也是4,非零,永远为真。应把,非零,永远为真。应把if(x=y)改为改为if(x=y) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.遗漏括号遗漏括号 语句: if x=y x=9; l运行状态:语法错误。 l错误描述:syntax error : identifier x。 l原因:if语句中,条件判断表达式必须加括号才正确。应 改为:if (x=y) x=9; 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.遗漏大括号遗漏大括号 程序段: if(ba) t=a;a=b;b=t;/*交换a,b两个变量的值*/ l运行状态:得出不正确的结果。 l原因:if语句

50、中,满足同一条件的多条执行语句必须用大 括号括起来才能得出正确结果。应改为:if(ba) t=a; a=b;b=t; 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.1while语句语句 while语句属于“当型”循环,一般适合解决非计数循环。 一般格式为 while (表达式表达式) 语句语句 3.3 3.3 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-9:把一个非零整数的各位分解出来,并按逆序输 出。例如,若输入为6582,则输出2 8 5 6。 #include main() int n; int remainder; pri

51、ntf(请输入要分解的数:); scanf(%d, while(n!=0) remainder=n%10; printf(%d ,remainder); n=n/10; 请输入要分解的数:6582 2 8 5 6 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.2do-while语句语句 do-while语句属于“直到型”循环。 一般形式是 do 语句语句 while(表达式表达式); 注意 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-9-2:把一个非零整数的各位分解出来,并按逆序输 出。例如,若输入为6582,则输出2 8 5 6。 #includ

52、e main() int n; int remainder; printf(请输入要分解的数:); scanf(%d, do remainder=n%10; printf(%d ,remainder); n=n/10; while(n!=0); 请输入要分解的数:6582 2 8 5 6 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.3for语句语句 for语句属于当型循环,它按步长修改循环控制变量 的值,故也称为“步长型”循环。 一般格式为: for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句 1.计算表达式计算表达式1,

53、通常用于循环开,通常用于循环开 始前设置变量初值。始前设置变量初值。 2.计算表达式计算表达式2,值为,值为0则结束循环,则结束循环, 否则执行第否则执行第3步。步。 3.执行循环体语句。执行循环体语句。 4.计算表达式计算表达式3,返回第,返回第2步。步。 执行流程执行流程 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例: 求求 1+2 +99 #include main( ) int i,s=0; for(i=1;i=99;i+) s=s+i; printf(“s=%d”,s); 分析:用变量分析:用变量i i从从1 1到到9999循环,把循环,把i i 的值累加到变量的

54、值累加到变量s s中,最后输出中,最后输出s s的的 值。值。 程序如下:程序如下: i=1 i=99 s=s+i i+ 假 真 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 从上面的程序我们看到,从上面的程序我们看到,for语句中:语句中: 表达式表达式1:通常是给循环控制变量赋初值:通常是给循环控制变量赋初值 表达式表达式2:循环是否继续执行的判别表达式,这个表达式:循环是否继续执行的判别表达式,这个表达式 通常与某一个(或多个)变量的值有关。通常与某一个(或多个)变量的值有关。 表达式表达式3:通常用于改变循环控制变量的值。:通常用于改变循环控制变量的值。 在某些情况下,在

55、某些情况下,for语句中的表达式语句中的表达式1、2、3都可以省略,都可以省略, 而改用其他的方式来实现这些功能。我们还用上面的例子说而改用其他的方式来实现这些功能。我们还用上面的例子说 明明for语句省略表达式的情形。语句省略表达式的情形。 例如, for(i=1,j=10;ij;i+,j-) printf(%d+%d=%dn,I,j,i+j); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1.省略表达式省略表达式1: #include main( ) int i=1,s=0; for(;i=99;i+) s=s+i; printf(“s=%d”,s); 2.省略表达式省略表

56、达式3: #include main( ) int i,s=0; for(i=1;i=99;) s=s+i;i+; printf(“s=%d”,s); 3. 同时省略表达式同时省略表达式1、3 #include main( ) int i=1,s=0; for(;i=99;) s=s+i;i+; printf(“s=%d”,s); 表达式表达式2也可以省略也可以省略 但在循环体中要借助但在循环体中要借助 break;语句来实现循语句来实现循 环的结束,我们将在环的结束,我们将在 后面介绍。后面介绍。 注意:表达注意:表达 式省略,分式省略,分 号不省略。号不省略。 第第3 3章章 C C程序的

57、基本控制结构程序的基本控制结构 for语句中的表达式可以是一切形式的表达式,逗号运算语句中的表达式可以是一切形式的表达式,逗号运算 符参与的表达式也可以运用在符参与的表达式也可以运用在for语句中,通常运用于表达语句中,通常运用于表达 式式1和表达式和表达式3。 如上面的例子可以改写为:如上面的例子可以改写为: #include main( ) int i,s; for(s=0,i=1;i=99;s=s+i,i+) ; printf(“s=%d”,s); 注意此处注意此处 的分号。的分号。 此处,表达式此处,表达式1用逗号表达式的形式,给多个变量赋初值。用逗号表达式的形式,给多个变量赋初值。

58、表达式表达式3用逗号表达式把循环体也写入其中。注意表达式用逗号表达式把循环体也写入其中。注意表达式3书书 写顺序不能交换。写顺序不能交换。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-11:求sum=1+3+5+7+9+99。 #include main( ) int i,s=0; for(i=1;i=99;i+=2) s=s+i; printf(“s=%d”,s); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.4 三种循环的比较三种循环的比较 (1)从功能和使用角度讲,for循环功能最强,最方便灵活, 因而使用较多。 (2)for循环与while

59、循环是等价的,两者可以相互代替 (3) for循环和while循环是先判断循环条件,后执行循环体; 而do-while循环则是先执行一次循环体,然后才判断循环条 件 因此,后者不管在什么情况下,都至少要执行一次循环 体 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.5循环的嵌套循环的嵌套 一个循环体内又包含另一个完整的循环结构,称循环嵌 套。三种循环语句都可以任意地互相嵌套。执行时把内层循 环看做是外层循环体中的一部分。 例如,例如, for(;) for(;) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:注意: 在使用循环相互嵌套时,被嵌套的一定是

60、一个完整的循 环结构,即两个循环结构不能相互交叉。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-12:用for循环输出如下图案: * * * * 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include main() int row,col,m,n; scanf(%d%d, for(row=1;row=m;row+) /* 外循环控制行数 */ for(col=1;col=n;col+) /* 内循环控制*的数量 */ printf(*); printf(n); 9 * * * * 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例:输出九

温馨提示

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

评论

0/150

提交评论