资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计 在一个函数内部,由左、右花括号括起在一个函数内部,由左、右花括号括起来的语句成为复合语句。一般形式是来的语句成为复合语句。一般形式是: 复合语句实际上是多条语句的集合。例复合语句实际上是多条语句的集合。例如:如: t=a;a=b;b=t; 4.1 语句和复合语句第4章选择程序设计注意:注意:一个复合语句在语法上等同于一个语句一个复合语句在语法上等同于一个语句. 复合语句作为一个语句又可以出现在其他复合语句的复合语句作为一个语句又可以出现在其他复合语句的内部内部(复合语句的嵌套复合语句的嵌套)。复复合合语语句句是是以以右右花花括括号号为为结结束束标标志志,因因此此,在在复复合合语语句句右右括括号号的的后后面面不不必必加加分分号号,但但在在复复合合语语句句内内的的最最后后一一个个非非复复合合语语句句是是要要以以分分号号作作为结束的。为结束的。 t=a;a=b;b=t;第4章选择程序设计4.1 语句和复合语句n(3 3)在复合语句中,一个复合语句内所进行)在复合语句中,一个复合语句内所进行的说明只适合于本层中该说明语句以后的部分,的说明只适合于本层中该说明语句以后的部分,在该复合语句外不起作用。(在该复合语句外不起作用。(见例程见例程)第4章选择程序设计4.1 语句和复合语句第4章选择程序设计1 1、标准、标准if-elseif-else结构结构 ififelseelse构造了一种二路分支选择结构,是一种最基本的选择结构。构造了一种二路分支选择结构,是一种最基本的选择结构。 【格式】【格式】 if ( if (表达式表达式) ) 语句语句1 1; else else 语句语句2 2;或:或: if ( if (表达式表达式) ) 语句语句1 1; else else 语句语句2 2; 例如:例如:if (xif (xy) y) printf(maxprintf(max= =dd,x)x); else else printf(maxprintf(max= =dd,y)y); 4.3 if语句的三种形式第4章选择程序设计例例: :键键盘盘输输入入两两个个整整数数分分别别赋赋给给x和和y,编编程程输输出出其其 中的大数。中的大数。 #include #include void main()void main() intint x,y; x,y; printf(Enterprintf(Enter x & y: ); x & y: ); scanf(%d,%d,&x,&yscanf(%d,%d,&x,&y);); printf(xprintf(x=%d,y=%dn,x,y);=%d,y=%dn,x,y); if (xy) if (xy) printf(maxprintf(max=x=%dn,x);=x=%dn,x); else else printf(maxprintf(max=y=%dn,y);=y=%dn,y); 4.3 if语句的三种形式第4章选择程序设计例例: 键盘输入一个实数,要求输出它的绝对值。键盘输入一个实数,要求输出它的绝对值。#include #include void main()void main() double x; double x; scanf(%lf,&xscanf(%lf,&x);); if if (x0.0) (x0.0) /*/*当当x x小小于于0.00.0时时, ,取取其其相相反反数数- -x x重重 新放入变量新放入变量x x中中*/ */ x=-x; x=-x; else /* else /*当当x0.0x0.0时时, ,x x的值不变的值不变*/ */ x=x;x=x; printf(%lfn,xprintf(%lfn,x);); 4.3 if语句的三种形式第4章选择程序设计2、缺省缺省elseelse子句的子句的ifif结构(又称不平衡结构(又称不平衡ifif结构结构 )【格式】【格式】 if (表达式表达式) 语句;语句;例如:例如: if (xy) y) printf(dd,x x) ); 4.3 if语句的三种形式第4章选择程序设计例例4.3 输输入入两两个个数数,分分别别放放入入x和和y中中,若若两两数数不不相相等等,则则输输出出其中的大数;若两数相等,则输出字符串其中的大数;若两数相等,则输出字符串“x=y”和和x的值。的值。#include void main() int x,y; printf(Enter x & y: ); scanf(%d%d,&x,&y); printf(x=%d,y=%dn,x,y); if (xy) printf(max is x=%dn,x); if (x=90) grade=A;else if (score=80) grade=B; else if (score=70) grade=C; else if (score=60) grade=D; else grade=E;第4章选择程序设计4 4、 三种形式三种形式if语句的语句的说明说明 (1) 三三种种形形式式的的if语语句句中中在在if后后面面都都有有“表表达达式式”,一般为逻辑表达式或关系表达式。一般为逻辑表达式或关系表达式。例如例如: if(a=b & x=y) printf(“a=b,x=y”); 以下以下if语句是合法的:语句是合法的: if (3) printf (OK); 表表达达式式的的类类型型不不限限于于逻逻辑辑表表达达式式,可可以以是是任任意意的的数数值值类类型型(包包括括整整型型、实实型型、字字符符型型、指指针针型型数数据据)。下面的下面的if语句也是合法的:语句也是合法的: if (a)printf(d,a);4.3 if语句的三种形式第4章选择程序设计 (2) 在在标标准准ifelse结结构构和和ifelse if阶阶梯梯结结构构中中,每每个个else前前面面应应有有一一分分号号,整整个个语语句句结结束束处处有有一一分分号号。例如:例如: if (x0) printf (%f,x); else printf(%f,-x); if语句中的内嵌语句要求用分号结尾,但该分号语句中的内嵌语句要求用分号结尾,但该分号只是作为间隔符,只是作为间隔符,if/elseif/else属于同一个属于同一个if语句。语句。else子句不能作为语句单独使用,它必须是子句不能作为语句单独使用,它必须是if语句的一部语句的一部分,与分,与if配对使用。配对使用。 4.3 if语句的三种形式第4章选择程序设计 (3) 在在if和和else后后面面可可以以只只含含一一个个内内嵌嵌的的操操作作语语句句,也也可可以以有有多多个个操操作作语语句句,此此时时需需用用花花括括号号“”将将几个语句括起来构成一个复合语句。几个语句括起来构成一个复合语句。如:如: if(abc & bca & cab) s=0.5*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=6.2f,area); else printf(it is not a trilateral); 4.3 if语句的三种形式第4章选择程序设计例例:编编写写程程序序,根根据据输输入入的的学学生生成成绩绩,给给出出相相应应的等级。假设等级划分如下:的等级。假设等级划分如下:90100分分 等级为等级为A;8089分分 等级为等级为B;7079分分 等级为等级为C;6069分分 等级为等级为D; 0 59分分 等级为等级为E。 4.3 if语句的三种形式第4章选择程序设计#include #include void main()void main() intint score; score; printf(Enterprintf(Enter score:); score:); scanf(%d,&scorescanf(%d,&score); ); printf(scoreprintf(score=%d,score);=%d,score); if (score=90) if (score=90) printf(gradeprintf(grade is A.n); is A.n); else if (score=80) else if (score=80) printf(gradeprintf(grade is B.n); is B.n); else if (score=70) else if (score=70) printf(gradeprintf(grade is C.n); is C.n); else if (score=60) else if (score=60) printf(gradeprintf(grade is D.n); is D.n); else else printf(gradeprintf(grade is E.n); is E.n);4.3 if语句的三种形式第4章选择程序设计n该例题该例题中的阶梯结构也可采取按成绩由低到高、分段中的阶梯结构也可采取按成绩由低到高、分段筛选输出的设计方法。筛选输出的设计方法。#include #include void main()void main() intint score; score; printf(Enterprintf(Enter score: ); score: ); scanf(%d,&scorescanf(%d,&score);); printf(scoreprintf(score=%d,score);=%d,score); if (score60) if (score60) printf(gradeprintf(grade is E.n); is E.n); else if (score70) else if (score70) printf(gradeprintf(grade is D.n); is D.n); else if (score80) else if (score80) printf(gradeprintf(grade is C.n); is C.n); else if (score90) else if (score90) printf(gradeprintf(grade is B.n); is B.n); else else printf(gradeprintf(grade is A.n); is A.n); 4.3 if语句的三种形式第4章选择程序设计当然该例题还可采用五个当然该例题还可采用五个if缺省结构设计如下:缺省结构设计如下:#include #include void main()void main() intint score; score; printf(Enterprintf(Enter score: ); score: ); scanf(%d,&scorescanf(%d,&score);); printf(scoreprintf(score=%d,score);=%d,score); if (score=0 & score=0 & score=60 & score=60 & score=70 & score=70 & score=80 & score=80 & score=90 (score=90 & & score=100)printf(grade score=100)printf(grade is is A.n);A.n); 4.3 if语句的三种形式第4章选择程序设计 if子子句句和和else子子句句中中可可以以是是任任意意合合法法的的C语语句句,if语语句句也也可可以以,称称为为嵌嵌套套的的if语语句句。内内嵌嵌的的if语语句句既既可可以以嵌嵌套套在在if子子句句中,也可以嵌套在中,也可以嵌套在else子句中子句中。4.3 嵌套的if语句1、 在在if子句中嵌套具有子句中嵌套具有else子句的子句的if语句语句 【格式】【格式】 if (表达式表达式1) if (表达式表达式2) 语句语句1; else 语句语句2; else 语句语句3; 当当表达式表达式1的值为非的值为非0时,执行内嵌的时,执行内嵌的ifelse语句;语句; 当当表达式表达式1的值为的值为0时,执行语句时,执行语句3。 第4章选择程序设计2、 在在if子句中嵌套不含子句中嵌套不含 else子句的子句的if语句语句【格式】【格式】 if (表达式表达式1) if (表达式表达式2)语句语句1; /*花括号代表复合语句花括号代表复合语句*/ else 语句语句2 ;4.3 嵌套的if语句3. 在在else子句中嵌套子句中嵌套if语句语句(1)嵌套)嵌套if语句带有语句带有else: if (表达式表达式1) 语句语句1 ; else if (表达式表达式2) 语句语句2; else 语句语句3;或写成:或写成: if (表达式表达式1) 语句语句1; else if (表达式表达式2) 语句语句2; else 语句语句3;第4章选择程序设计(2)嵌套)嵌套if语句不带语句不带else: if (表达式表达式1) 语句语句1; else if(表达式表达式2) 语句语句2; 或写成:或写成: if (表达式表达式1) 语句语句1; else if (表达式表达式2) 语句语句2 ; 内内嵌嵌在在else子子句句中中的的if语语句句无无论论是是否否有有else子子句句,在在语语法法上上都都不不会会引引起起误误会会(在在if中中嵌嵌套套容容易易误误会会)。建建议议在在设设计计嵌嵌套套的的if语句时,尽量把内嵌的语句时,尽量把内嵌的if语句嵌在语句嵌在else子句中。子句中。 如果不断在如果不断在else子句中嵌套子句中嵌套if语句可形成多层嵌套。语句可形成多层嵌套。4.3 嵌套的if语句第4章选择程序设计if (表达式表达式1) 语句语句1;else if (表达式表达式2) 语句语句2; else if (表达式表达式3) 语句语句3; else if (表达式表达式4) 语句语句4 else 语句语句n;或写成:或写成:if (表达式表达式1) 语句语句1;else if (表达式表达式2) 语句语句2;else if (表达式表达式3) 语句语句3; else if (表达式表达式n- -1)语句语句n-1;else 语句语句n;4.3 嵌套的if语句第4章选择程序设计写程序,判断某一年是否闰年。闰年条件 :(1)能被4整除,但不能被100整除的年份都是闰年,如1996,2004是闰年;(2)能被100整除,又能被400整除的年份是闰年,如1600,2000是闰年;方法一: year%4=0&year%100!=0|year%400=0 方法二: (流程图) 采用if-else阶梯结构。另设标志变量leap=1代表闰年;leap=0代表非闰年。 方法三:( N-S图)4.3 if语句应用举例第4章选择程序设计条件运算符一般形式:条件运算符一般形式: 表达式表达式1?表达式?表达式2:表达式:表达式3例:从键盘输入一个例:从键盘输入一个x,计算并输出下列分段函数值:,计算并输出下列分段函数值: (1)条件运算符优先级比赋值运算符高:)条件运算符优先级比赋值运算符高: y=(x0)?(x*x-1): (x*x+1);等价于等价于 y=(xb?a:cd?c:d等价于等价于ab?a: (cd?c:d)4.4 条件运算符X2-1 x=0y=第4章选择程序设计条件运算符一般形式:条件运算符一般形式: 表达式表达式1?表达式?表达式2:表达式:表达式3例:从键盘输入一个例:从键盘输入一个x,计算并输出下列分段函数值:,计算并输出下列分段函数值: (1)条件运算符优先级比赋值运算符高:)条件运算符优先级比赋值运算符高: y=(x0)?(x*x-1): (x*x+1);等价于等价于 y=(xb?a:cd?c:d等价于等价于ab?a: (cd?c:d)4.4 条件运算符X2-1 x=0y=第4章选择程序设计例例4.9:从从键键盘盘输输入入一一个个字字符符,如如果果输输入入的的是是英英文文大大写写字字母母,则则将将它它转转换换成成小小写写字字母母后后输输出出,否否则则输输出出原原来来输入的字符。输入的字符。#include void main()char ch;printf(input ch:);scanf(%c,&ch);ch=(ch=A & ch=A&chA&ch=z)?ch+32:ch);=z)?ch+32:ch);第4章选择程序设计 Switch语句是多分支选择语句。用来实现多分支语句是多分支选择语句。用来实现多分支选择结构。选择结构。【格式】格式】switchswitch ( (表达式表达式) ) casecase常量表达式常量表达式1 1:语句:语句1 1; casecase常量表达式常量表达式2:语句:语句2 2; casecase常量表达式常量表达式n:语句语句n n; defaultdefault :语句语句n n1 1; 4.5 switch语句任意类型1.switch,case 是关键字;2.常量表达式必须与switch后面的表达式类型相同;3.Default是关键字,起标号的作用,代表所有case标号之外的那些标号;第4章选择程序设计例4.8用switch语句编程实现如下功能:输入学生成绩的等级(A、B、C、D、E),打印出对应的百分制分数段。A:90100B:8089C:7079D:6069E:059初步编写程序如下:4.5 switch语句第4章选择程序设计#include #include void main()void main() char grade;char grade;printf(Pleaseprintf(Please input grade:); input grade:);scanf(%c,&gradescanf(%c,&grade););switch(grade)switch(grade) case case A:printf(gradeA:printf(grade A:90-100n); A:90-100n); case case B:printf(gradeB:printf(grade B:80-89n); B:80-89n); case case C:printf(gradeC:printf(grade C:70-79n); C:70-79n); case case D:printf(gradeD:printf(grade D:60-69n); D:60-69n); case case E:printf(gradeE:printf(grade E: 60n); E: 60n); 4.5 switch语句第4章选择程序设计 switch语句也可以嵌套。 例4.9 嵌套switch语句的使用。4.5 switch语句提示 : (1)switch结构中的表达式、常量表达式1常量表达式必须是整形或字符型。 (2)同一个switch结构中的常量表达式值必须互不相同,否则会出现矛盾的现象。 (3)每个case语句只是一个入口标号,并不能确定执行的终止点,如果遇不到终止语句break,程序会从入口点开始一直执行到switch结构的结束点; (4)case语句标号后语句可以是一条语句,也可以是若干语句,但花括号可有可无;第4章选择程序设计例4.10 根据输入的学生成绩,给出相应的等级。假设等级划分如下:90100分 等级为A;8089分 等级为B;7079分 等级为C;6069分 等级为D; 059分 等级为E。 4.5 switch语句第4章选择程序设计#include #include void main()void main() intint score; score; printf(Pleaseprintf(Please input score:); input score:); scanf(%d,&scorescanf(%d,&score);); switch(score/10) switch(score/10) case 10:case 10: case 9 : case 9 : printf(gradeprintf(grade is A!n);break; is A!n);break; case 8 : case 8 : printf(gradeprintf(grade is B!n);break; is B!n);break; case 7 : case 7 : printf(gradeprintf(grade is C!n);break; is C!n);break; case 6 : case 6 : printf(gradeprintf(grade is D!n);break; is D!n);break; 4.5 switch语句第4章选择程序设计 case 5 : case 5 : case 4 : case 4 : case 3 : case 3 : case 2 : case 2 : case 1 : case 1 : case 0 : case 0 : printf(gradeprintf(grade is E.n);break; is E.n);break; default: default: printf(Inputprintf(Input error!n); error!n); 4.5 switch语句第4章选择程序设计 例4.12 用switch语句创建一个简单的帮助系统:在系统中描述if、ifelse if、switch的含义。系统首先显示帮助主题,然后等待用户输入选项,输入的选项被switch用来选择显示所需的帮助主题信息(读者可能会对这个程序中的扩展帮助信息感兴趣,可以加入更多的新的主题)。 4.5 switch语句第4章选择程序设计#include #include void main()void main() intint choice; choice; printfprintf(*n);(*n); printfprintf( Help on:nn);( Help on:nn); printfprintf( 1. ifn);( 1. ifn); printfprintf( 2. if-else ifn);( 2. if-else ifn); printfprintf( 3. switchnn);( 3. switchnn); printfprintf(*n);(*n); printfprintf( Enter choice (1-3):);( Enter choice (1-3):); scanf(%d,&choicescanf(%d,&choice);); 4.5 switch语句应用举例第4章选择程序设计switch(choice)switch(choice) case 1 : case 1 : printf(ifprintf(if is cs conditional branch is cs conditional branch statement.n);statement.n); break; break; case case 2 2 : : printf(ifprintf(if-else -else if if is is cs cs multiwaymultiway branch branch statement.n);statement.n); break; break; case 3 : case 3 : printf(switchprintf(switch is cs is cs multiwaymultiway branch branch statement.n);statement.n); break; break; default: default: printf(Youprintf(You must must enter enter a a number number between between 1 1 and 3.n);and 3.n); 4.5 switch语句应用举例第4章选择程序设计例例4.11:编编制制一一个个C程程序序,其其功功能能是是:首首先先从从键键盘盘一一次次输输入入两两个个实实数数作作为为运运算算对对象象(两两个个实实数数之之间间用用逗逗号号分分隔隔),然然后后从从键键盘盘再再输输入入一一个个运运算算符符,最最后后输输出出运运算算结果。其中运算符的符号分别是:结果。其中运算符的符号分别是: 加法运算符:加法运算符:“+”; 减法运算符:减法运算符:“-”; 乘法运算符:乘法运算符:“*”或或“.”; 除法运算符:除法运算符:“/”; 在在作作除除法法运运算算时时,如如果果第第二二个个实实数数为为0时时,要要求求输输出出信信息息“err!”。如如果果输输入入的的运运算算符符不不是是上上述述所所定定义的运算符,要求输出信息义的运算符,要求输出信息”Incorrect symbol!”。 4.5 switch语句应用举例第4章选择程序设计v4.5.1 语句标号v4.5.2 goto语句 4.6 语句标号和goto语句第4章选择程序设计 练习: 试编写一程序,要求从键盘中输入月份,输出该月份所对应的天数。 注意:v 大月和小月的不同;v 2月的处理(闰年和非闰年);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号