
C语言第3章C程序的基本控制结构.ppt
97页第第3 3章章 C C程序的基本控制结构程序的基本控制结构 第第3章章 C程序的基本控制结构程序的基本控制结构3.1 顺序结构顺序结构 3.2 选择结构选择结构 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 学习目标学习目标 ((1)掌握)掌握C语言语句的分类语言语句的分类2)理解三种程序控制结构的流程图理解三种程序控制结构的流程图3)掌握各种类型数据的格式化输入)掌握各种类型数据的格式化输入/输出方法输出方法4)掌握字符数据的非格式化输入)掌握字符数据的非格式化输入/输出方法输出方法5)理解选择结构的含义;掌握)理解选择结构的含义;掌握if、、switch语句的使用方法语句的使用方法 ((6)掌握关系运算符、逻辑运算符和条件运算符的用法;运)掌握关系运算符、逻辑运算符和条件运算符的用法;运算符的优先级关系和结合性算符的优先级关系和结合性7)理解循环结构的含义;掌握不同循环结构的选择及其转)理解循环结构的含义;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法换方法;掌握混合控制结构程序设计的方法 ((8)掌握)掌握C语言三种循环结构的特点;掌握语言三种循环结构的特点;掌握while、、do-while、、for、、break、、continue语句的使用方法。
语句的使用方法第第3 3章章 C C程序的基本控制结构程序的基本控制结构 程序设计语言有顺序、选择、循环三种基本程序设计语言有顺序、选择、循环三种基本的控制结构的控制结构1.用流程图表示.用流程图表示((1)顺序结构)顺序结构 表示先执行表示先执行A,再执行,再执行BBAab第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((2)选择结构)选择结构 如果如果P条件成立,执行条件成立,执行A,否则执行,否则执行B,然后转向,然后转向后面的语句后面的语句abab第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((3)循环结构)循环结构 有两种形式有两种形式 ①① while 结构(当型循环)结构(当型循环) 表示先判断条件表达式表示先判断条件表达式P,当,当P成立,即为成立,即为“真真”,,反复执行反复执行循环体循环体A;直到;直到P不成立,即为不成立,即为“假假”,转向其,转向其后面的语句。
后面的语句注意:注意:如果如果P一开始就不成立,一开始就不成立, 则则A一次也不执行,一次也不执行, 直接转到下一条语句直接转到下一条语句ab第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ②② do-while结构(直到型循环)结构(直到型循环) 先执行先执行循环体语句循环体语句A ,然后判断条件表达式,然后判断条件表达式P注意:注意:不管条件不管条件P 成立与否,循成立与否,循环体环体A至少执行一次至少执行一次ab第第3 3章章 C C程序的基本控制结构程序的基本控制结构 三种基本结构的共同特点三种基本结构的共同特点1.只有一个入口;只有一个入口;2.只有一个出口;只有一个出口;3.结构内的每一部分都有可能被执行到;结构内的每一部分都有可能被执行到;4.结构内不存在结构内不存在“死循环死循环”第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.1 C程序的语句程序的语句C语言的语句可分为以下四类:语言的语句可分为以下四类:1.表达式语句表达式语句2.函数调用语句函数调用语句 3.控制语句控制语句 4.复合语句复合语句 5.空语句空语句 简单语句简单语句第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1. 表达式语句表达式语句由一个表达式加上一个分号构成。
其一般形式为:由一个表达式加上一个分号构成其一般形式为:表达式;表达式; 如:如: x=y+z;; y+z;; i++;;2. 函数调用语句函数调用语句由函数调用表达式加分号构成由函数调用表达式加分号构成. 如:如: printf(“C Program”);; scanf(“%d”,&a);第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.控制语句控制语句用于控制程序的流程,用于控制程序的流程, 以实现程序的各种结构方式以实现程序的各种结构方式 C语言有C语言有九种九种控制语句控制语句,, 可分成以下三类可分成以下三类1) 条件判断语句:条件判断语句:if语句,语句,switch语句2) 循环执行语句:循环执行语句:do while语句,语句,while语句,语句,for语句3) 转向语句:转向语句:break语句,语句,goto语句,语句,continue语语句,句,return语句。
语句第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4. 4. 复合语句复合语句 把多个语句用大括号括起来组成的一个语句把多个语句用大括号括起来组成的一个语句称复合语句称复合语句例如:例如: 花括号中的语句,可以是简单花括号中的语句,可以是简单语句、空语句、复合语句、流程控语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时在语法上看成是一条语句,执行时顺序执行花括号中的每条语句复顺序执行花括号中的每条语句复合语句多用于流程控制语句中合语句多用于流程控制语句中{ x=y+z;; a=b+c;; printf(“%d%d”,,x,,a);;} 复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;;”结尾,结尾,在括号在括号“}”外不能加分号外不能加分号第第3 3章章 C C程序的基本控制结构程序的基本控制结构 5.空语句空语句只有分号组成的语句称为空语句只有分号组成的语句称为空语句 例如:例如: while(getchar()!='\n') ;;第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.2 数据输出函数数据输出函数printf() 和和putchar一.一.printf()函数(格式输出函数)函数(格式输出函数) 1.调用的一般形式调用的一般形式 printf(“格式控制字符串格式控制字符串”,输出表列输出表列) 其中格式控制字符串用于指定输出格式。
格式控制串可由其中格式控制字符串用于指定输出格式格式控制串可由格式字符串格式字符串和和非格式字符串非格式字符串两种组成格式字符串是以两种组成格式字符串是以%开开头的字符串,在头的字符串,在%后面跟有各种格式字符,以说明输出数据后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等的类型、形式、长度、小数位数等可以是常量、可以是常量、变量、表达式量、表达式1.格式字符格式字符2.转义字符转义字符3.普通字符普通字符第第3 3章章 C C程序的基本控制结构程序的基本控制结构 【练一练】void main(){ int a=88,b=89; printf("%d %d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c\n",a,b); printf("a=%d,b=%d\n ",a,b);}程序运行输出结果:88 8988,89X,Ya=88,b=89第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.格式字符串.格式字符串 格式字符串的一般形式为:格式字符串的一般形式为:3.1 3.1 顺序结构顺序结构第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符(格式转换说明符(格式字符格式字符))功功能能 %c 输出一个字符输出一个字符 %d 输出十进制整数,按实际位数输出输出十进制整数,按实际位数输出 %f 定点格式输出浮点数,整数部分取实际位数,小数部分保留定点格式输出浮点数,整数部分取实际位数,小数部分保留6位位 %e 指数格式指数格式[-]+nn输出浮点数输出浮点数 %g 选择选择 %f和和%e格式中,输出宽度较小的一种格式中,输出宽度较小的一种 %s输出字符串,按实际位数输出输出字符串,按实际位数输出 %u输出十进制无符号整数,按实际位数输出输出十进制无符号整数,按实际位数输出 %o输出八进制无符号整数,按实际位数输出输出八进制无符号整数,按实际位数输出 %x输出十六进制无符号整数,按实际位数输出输出十六进制无符号整数,按实际位数输出 %%输出一个输出一个% %p输出指针值输出指针值第第3 3章章 C C程序的基本控制结构程序的基本控制结构 对于格式转换说明符可以进行以下三类修饰:对于格式转换说明符可以进行以下三类修饰:1. 1. 指定字段宽度指定字段宽度(1) %其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出最小有效位数。
规定输出最小有效位数例如,例如, printf(“%3d,%6d,%6.5d\n”,1234,1234,1234);输出结果为输出结果为1234, 1234, 01234(2) %其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出小数位数规定输出小数位数第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如,printf(“%10f,%10.2f,%.2f\n”,123.456,123.456,123.4); 输出结果为输出结果为 (3) %其中:其中:m 规定输出最小宽度;(规定输出最小宽度;(n-1)为尾数部分的小数位数为尾数部分的小数位数例如,例如,printf(“%10e,%10.4e,%.3e\n”,123.456,123.456,123.4);输出结果为输出结果为1.23456e+02, 1.235e+02,1.23e+02第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:注意:(1) 无论是无论是 % % 还是还是 % % 格式,对舍去的小数最高格式,对舍去的小数最高位都四舍五入位都四舍五入。
例如,例如, printf(“%04d,%010.2f,%010.3e\n”,125,12.3,123.5);printf(“%04d,%010.2f,%010.3e\n”,125,12.3,123.5);输出结果为:输出结果为:0125,0000012.30,001.24e+020125,0000012.30,001.24e+02(2) 对以上三种情况,如果在对以上三种情况,如果在““%”%”和和 之间加一个之间加一个 0 0,,则在规定字段宽度内左边多余的空位以则在规定字段宽度内左边多余的空位以 0 0 来填充,而不来填充,而不是空格第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (4) %2. 2. 左对齐左对齐 如果在如果在“%”之后加一个负号(即之后加一个负号(即“-”),则在规定的宽度),则在规定的宽度内输出内容向左对齐,右面补空格或内输出内容向左对齐,右面补空格或“0”例如,例如,printf(“%3s,%15s,%10.5s,%.4s\n”,”China”,”Beijing”,”Beijing”,”China”);其中:其中:m 的含义与前面相同;的含义与前面相同;n 规定截取输出字符串左面的字符规定截取输出字符串左面的字符个数,字符串长度小于个数,字符串长度小于 n 时,按实际长度输出(时,按实际长度输出(n不起作用)。
不起作用)输出结果为输出结果为 China,, Beijing,, Beiji,,Chin第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如,printf(“%-3d,%-6d,%-6.5d\n”,1234,1234,1234);printf(“%-10f,%-10.2f,%-.2f\n”,123.456,123.456,123.4);printf(“%-3s,%-15s,%-10.5s,%-.4s\n”,”China”,”Beijing”, ”Beijing”,”China”);输出结果为输出结果为1234,1234 , 01234China, Beijing , Beiji ,Chin第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3. 3. 类型修饰类型修饰(2) 在类型说明符在类型说明符 f、、e、、g 前面可以加字母前面可以加字母 l,表示输出,表示输出double 型数据1) 在类型说明符在类型说明符 d、、u、、o、、x、、i 前面可以加字母前面可以加字母“l”或或“h”,分别,分别表示输出表示输出 long 或或 short 型的数据。
型的数据例如,例如,printf(“%d,%ld\n”,7000,70000l,);例如,例如,printf(“%15.8lf,%16.9le\n”,12.34567889,12.34567889);输出结果为输出结果为 12.34567889, 1.234567889e+01第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于格式输出的几点说明:关于格式输出的几点说明:-1和和65535例如,例如, printf(“%d,%u,%o,%x\n”,-1,-1,-1,-1); printf(“%d,%u,%o,%x\n”,65534u,65534u,65534u,65534u);((1)对于任何一种形式的整数都可以用)对于任何一种形式的整数都可以用 d、、i、、o、、u、、x(或(或“X”)格式输出,其中)格式输出,其中 d、、 i 输出带符号十进制形式,而输出带符号十进制形式,而 u、、o、、x格式输出无符号整数格式输出无符号整数输出结果为输出结果为-1,65535,177777,ffff-2,65534,177776,fffe-2和和655341 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0假设一个基本整假设一个基本整型数据在内存占型数据在内存占2B第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((2)如果)如果 printf( ) 函数中有多个表达式时,不同系统求值顺序不函数中有多个表达式时,不同系统求值顺序不同。
同Turbo C 系统的求值顺序是自右至左的系统的求值顺序是自右至左的而在从右到左进行时,还而在从右到左进行时,还按运算符不同分批运算按运算符不同分批运算 例如,例如,printf(“%d,%d,%d\n”,2+3,3*4,6/2);void main(){ int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i--); printf("%d\n",i++); printf("%d\n",-i--);}例例3-1 printf函数输出表列中的求值顺序函数输出表列中的求值顺序运行输出结果:运行输出结果:9887-8第第3 3章章 C C程序的基本控制结构程序的基本控制结构 void main(){ int i=8; printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);} Turbo C中的结果:中的结果:7687-8中的结果中的结果8788-8 因为不同的系统对这种问题的处理方式采用不同的规则所以,应该因为不同的系统对这种问题的处理方式采用不同的规则。
所以,应该尽可能在尽可能在printf语句内输出变量的值,不建议输出表达式的值语句内输出变量的值,不建议输出表达式的值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-2:使用:使用printf函数输出如下信息:函数输出如下信息:*************************** 好好学习,天天向上***************************#include <>void main(){ printf(“***************************\n”); printf(" 好好学习,天天向上好好学习,天天向上\n"); printf("***************************\n");}输出结果:*************************** 好好学习,天天向上好好学习,天天向上***************************第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-3:使用:使用printf函数输出如下信息:函数输出如下信息:姓名 外语 数学王丽 60 70程序:#include <>void main(){ printf("姓名\t外语\t数学\n"); printf(“王丽\t60\t70\n”);}第第3 3章章 C C程序的基本控制结构程序的基本控制结构 二.字符输出函数二.字符输出函数putchar()一般调用形式为:一般调用形式为: putchar(字符参数字符参数) 其功能是在显示器上输出单个字符。
其功能是在显示器上输出单个字符例如:设例如:设char x=‘B’;;int i=66;;lputchar('A');; 输出大写字母输出大写字母Alputchar(x);; 输出字符变量输出字符变量x的值字母的值字母Blputchar(‘\101’);输出字符;输出字符Alputchar('\n');换行;换行lputchar(65);输出大写字母;输出大写字母Alputchar(i);; 输出变量输出变量i的值为的值为ASCII码的字母码的字母B字符型常量、变量字符型常量、变量或整型常量、变量或整型常量、变量注意:注意:使用本函数前必须要用文件包含命令:使用本函数前必须要用文件包含命令:#include<>第第3 3章章 C C程序的基本控制结构程序的基本控制结构 数据输入函数数据输入函数scanf()和和getchar 一.一. scanf函数(格式输入函数)函数(格式输入函数) 一般调用形式一般调用形式 scanf(“输入格式控制串输入格式控制串”,输入变量输入变量地址地址清单清单);格式格式转换说明符明符其他字符其他字符例如,例如, int k ; float x; char ch;scanf(“%d,%f,%c”,&k,&x,&ch);第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符格式转换说明符功功能能 %c 输入一个字符输入一个字符 %d 输入十进制整数输入十进制整数 %f 输入浮点数,输入浮点数,不能指定小数位数不能指定小数位数 %e 输入浮点数,输入浮点数,不能指定小数位数不能指定小数位数 %s输入字符串,遇空格、制表符或回车符结束输入字符串,遇空格、制表符或回车符结束 %u输入十进制无符号整数输入十进制无符号整数 %o输入八进制无符号整数输入八进制无符号整数 %x输入十六进制无符号整数输入十六进制无符号整数第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于关于 scanf( ) 函数使用的几点说明:函数使用的几点说明:1 1 输入数据的分隔符输入数据的分隔符:空格、制表符或回车键:空格、制表符或回车键例如,例如,scanf(“%d%d%d”,&i,&j,&k);输入形式可以是:输入形式可以是:①① 3 4 5
数例如,例如,scanf(“%d%d”,&a,&b);如果输入如果输入12 .56 23
通常把输入的字符赋予一个字符变量,构成赋值语句,如:通常把输入的字符赋予一个字符变量,构成赋值语句,如:#include<>void main(){ char c;; printf("input a character\n");; c=getchar();; putchar(c);;}注意:注意:使用本函数前必须要用文件包含命令:使用本函数前必须要用文件包含命令:#include<>第第3 3章章 C C程序的基本控制结构程序的基本控制结构 顺序结构程序举例 顺序结构程序举例例3-1:编写程序,要求输入以华氏度表示的温度值,输出以摄氏度表示的温度值提示】表示温度的单位有两种:摄氏度和华氏度由华氏度转换为摄氏度的转换公式为:C=5/9(F-32) 其中C代表摄氏度,F代表华氏度第第3 3章章 C C程序的基本控制结构程序的基本控制结构 测试(运行)测试(运行)输入华氏温度输入华氏温度:75.5
一般形式为: <表达式表达式1> <关系运算符关系运算符>< 表达式表达式2> 关系表达式的值关系表达式的值: “真”和“假”两种,分别用“1”和“0” 表示例如,例如,设有定义:int a=3,b=4,c=5,d=6,i=-8,j=1,k=2,x=0; 计算下列各表达式的值 1.a+b>c-d 2.x>3/2 3.'a'+1
参加逻辑运算的表达式以“非非0”和和“0”代表代表“真真”和和“假假” aba&&ba||b!a!b0000110非00110非000101非0非01100 int a=5; float b=3.5; !a ( ) !(a < b) ( ) a && b ( ) !a&&b ( ) !a&&!b ( ) !(a&&b) ( ) a ¦¦ b ( ) !a||b ( ) !a||!b ( ) !(a||b) ( ) (a < b) && (a > 0) ( ) (a < b) ¦¦ (a > 0) ( )例如例如011000110001第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1 if-else语句一般格式: if(表达式表达式) 语句语句1;; [ else 语句语句2;;]功能:如果表达式的功能:如果表达式的值为真,真,则执行行语句句1,,否否则执行行语句句2 。
C语言的if语句有两种基本形式 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例 输入两个整数,求最大数include <>void main() /* 主函数 */{ int a,b; int max; printf("\n 请输入两个数: "); scanf("%d%d",&a,&b); if(a>b) /* 判断表达式 */ max=a; /* 语句1 */ else max=b; /* 语句2 */ printf("max=%d\n",max);}请输入两个数:8 9
第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例 输入两个整数,求最大数include <>void main() /* 主函数 */{ int a,b; int max; printf("\n 请输入两个数: "); scanf("%d%d",&a,&b); max=a; if(maxmax=9第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <>void main(){ int a,b,t; scanf(“%d,%d ”, &a,&b); 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) 语句语句1else if(表达式表达式2) 语句语句2else if(表达式表达式3) 语句语句3…else if(表达式表达式n) 语句语句n[else 语句语句n+1]执行流程如下图所示:执行流程如下图所示:第第3 3章章 C C程序的基本控制结构程序的基本控制结构 功能:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句然后跳到整个if语句之外继续执行程序如果所有的表达式均为假,则执行语句n+1然后继续执行后续程序第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例 从键盘输入任意字符,根据其从键盘输入任意字符,根据其ASCII码来判别属于哪类码来判别属于哪类字符 #"void main(){ char c; printf("input a character: "); c=getchar(); if(c<32) printf("This is a control character\n"); else if(c>='0'&&c<='9') printf("This is a digit\n"); else if(c>='A'&&c<='Z') printf("This is a capital letter\n"); else if(c>='a'&&c<='z') printf("This is a small letter\n"); else printf("This is an other character\n");}第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-6.输入某学生的成绩,经处理后给出成绩输入某学生的成绩,经处理后给出成绩的等级。
等级划分如下:的等级等级划分如下:输入一个分数输入一个分数scorel当当score >= 90 输出输出 Al当当80<=score <90 输出输出 Bl当当70<=score <80 输出输出 Cl当当60<=score <70 输出输出 Dl当当 score<60 输出输出 E 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include<> /* li3-6.c */main( ){ float score; scanf(“%f”, &score); 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) 语句句1 [ else 语句句2]else if ( 表达式表达式3) 语句句3 [ else 语句句4]表达式表达式2表达式表达式1表达式表达式3语句语句1语句语句2语句语句3语句语句4非000非00非0第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.条件运算符和条件表达式.条件运算符和条件表达式 条件运算符 ? : 它是一个三目运算符条件表达式形式为: 表达式表达式1?表达式表达式2:表达式表达式3功能功能:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值优先级优先级:仅高于逗号和赋值运算结合性结合性:右结合的例如:max=a>b?a:b 相当于 max=(a>b?a:b) a>b?a:c>d?c:d 相当于 a>b?a:(c>d?c:d) if(a>b) max=a;else max=b;max=(a>b)?a:b; 等价于表达式表达式1取表达式取表达式2的值的值作为整个表达式作为整个表达式的值的值非00取表达式取表达式3的值作的值作为整个表达式的为整个表达式的值值第第3 3章章 C C程序的基本控制结构程序的基本控制结构 如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’);例 考虑下面程序的输出结果: #include <> main() { int x,y; scanf(“%d,%d”,&x,&y); if(x>y) x=y; y=x; else x++; y++; printf(“%d,%d\n”,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 ~ else 配对原则:配对原则:第第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: 语句组语句组1;; break;; case E2: 语句组语句组2;; break;; … case En: 语句组语句组n;; break;; [default: 语句组语句组n+1;;]} E1~En常量常量表达式表达式第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:lE1,E2,…En是常量表达式,且值必须互不相同。
l语句标号作用, case后可包含多个可执行语句,且不必加{ },必须用break跳出ldefault可以缺省,在这种情况下,如果没有成功的匹配,则程序什么都不执行,直接退出switchlbreak语句也可以缺省,程序流程如图3-14所示l多个case可共用一组执行语句如:如: …… case ‘A’: case ‘B’: case ‘C’: printf(“score>60\n”); 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为整型数,利用两个整数相除,结果自动取整的特性,score和 score /10 有如下对应关系: score score/10 90以上 10, 9 70~89 7 , 8 60~69 6 60以下 5,4,3,2,1,0 因此,可以用score /10的值来确定分支。
第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include<>void main(){ int score; char ch; printf("\ninput a student's grade:"); scanf("%d",&score); if(score<0||score>100) printf("\ninput error!\n"); else { switch (score/10) { case 10: case 9: ch='A'; break; case 8: ch='B'; break; case 7: ch='C'; break; case 6: ch='D'; break; default: ch='E'; } printf("\nthe student's scort:%c\n",ch); }}第第3 3章章 C C程序的基本控制结构程序的基本控制结构 选择结构程序举例 选择结构程序举例例例3-8 下下面面程程序序的的功功能能是是将将一一个个50000以以内内的的正正整整数数逆逆序序输出。
例如输入输出例如输入1234,输出,输出4321程序如下:第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <>main(){int a,b,c; int n; printf("Please input an integer(>0 and <=50000): "); scanf("%d",&a); if(a>=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; case 1: c=a%10; a/=10; b=b*10+c; }printf("Result: %d.\n", b);}第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.6 常见错误常见错误(自修自修)1. 把关系运算符把关系运算符“==”误写为赋值运算符误写为赋值运算符“=” 比较两个数的大小关系。












