第5讲 选择结构程序设计

上传人:qt****68 文档编号:52294238 上传时间:2018-08-20 格式:PPT 页数:22 大小:530.50KB
返回 下载 相关 举报
第5讲 选择结构程序设计_第1页
第1页 / 共22页
第5讲 选择结构程序设计_第2页
第2页 / 共22页
第5讲 选择结构程序设计_第3页
第3页 / 共22页
第5讲 选择结构程序设计_第4页
第4页 / 共22页
第5讲 选择结构程序设计_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第5讲 选择结构程序设计》由会员分享,可在线阅读,更多相关《第5讲 选择结构程序设计(22页珍藏版)》请在金锄头文库上搜索。

1、第四讲 选择结构程序设计 C语句概述 选择结构程序设计4.1 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令 C语句分类 表达式语句:表达式加分号构成如如: : total=total+limit; total=total+limit; a=3; a=3;ab; ab;funcfunc( ); ( ); printf(“Hello,world!n”); printf(“Hello,world!n”);分支if( )else switch循环for( )while( )dowhile( )辅助控制continuebreakgotoreturn空语句: ;程序控制语句(种) 复合语句:用

2、 括起来的一组语句 一般形式: 数据说明部分; 执行语句部分; 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套main()main() int a,b; int a,b;a=10; a=10; printf(“%d,%d”,a,b); printf(“%d,%d”,a,b); 4.2 选择结构程序设计 if 语句(条件选择语句) if语句的三种形式 形式一: 格式:if (exp) statement 形式二: 格式:if (exp)statement1elsestatement2执行过程执行过程expexpstatementstatement非非0 0=0=0expexpsta

3、tement1statement1statement2statement2非非0 0=0=0if (xy) max=x; else max=y;例:if (xy)printf(“%d”,xz );例: 形式三 格式: 执行过程: if (exp1) statement1if (exp1) statement1else if (exp2) statement2else if (exp2) statement2else if (exp3) statement3else if (exp3) statement3else statement else statement exp1exp1stateme

4、nt1statement1非非0 0=0=0exp2exp2exp3exp3statementstatementstatement3statement3statement2statement2非非0 0非非0 0=0=0=0=0if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 例:说明: 第二、第三种形式的if语句中,在每个else前面有一个分号 ,整个语句结束出有一个分号。If

5、(x0)printf(“%f”,x);elseprintf(“%f”,-x); 在if和else后面如果有多个操作语句,此时用“”将几个 语句括起来形成一个复合语句If(a+bcarea=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%6.2f”,area); elseprintf(“it is not a trilateral”); 说明:if后面的表达式类型任意语句可以是复合语句考虑下面程序的输出结果考虑下面程序的输出结果: : /* EX5-1.C */ /* EX5-1.C */ main()main() int x,y; int x,y;scanf(“%

6、d,%d”, scanf(“%d,%d”,if(xy) if(xy)x=y; y=x; x=y; y=x;else elsex+; y+; x+; y+;printf(“%d,%dn”,x,y); printf(“%d,%dn”,x,y); Compile Error!Compile Error!if(a=b if(3) printf(“OK”); if(a=2) printf(“%d”,a);Error 9:Misplaced else in function main/* ex5-2.c */* ex5-2.c */ main()main() float a,b,t; float a,b,

7、t;scanf(“%f,%f“, scanf(“%f,%f“,if (ab) if (ab) t=a; a=b; b=t; t=a; a=b; b=t; printf(“%5.2f,%5.2f“,a,b); printf(“%5.2f,%5.2f“,a,b); 3.6,-3.2 -3.20,3.60例5-2 输入两个实数,按代数值由小到大输出例5-3 输入三个数,要求按由小到大顺序输出 分析: If ab 将a和b对换 If ac 将a和c对换 If bc 将b和c对换 需要定义几个变量?才能完成对换? 在有“变量对换”这一类的操作中,都要定义一个暂 存变量,常起名为或者/*ex5-3.c*/

8、*ex5-3.c*/ main()main() float a,b,c,t; float a,b,c,t;scanf(“%f,%f,%f”, scanf(“%f,%f,%f”,if (ab) if (ab) t=a; a=b; b=t;t=a; a=b; b=t; if (ac) if (ac) t=a; a=c; c=t;t=a; a=c; c=t; if (bc) if (bc) t=b; b=c; c=t;t=b; b=c; c=t; printf(“%5.2f,%5.2f,%5.2f”,a,b,c) printf(“%5.2f,%5.2f,%5.2f”,a,b,c); ; 3,7,1

9、1.00,3.00,7.00例5-3 输入三个数,要求按由小到大顺序输出例5-4 写程序,判断某一年是否是闰年判断闰年的条件是: 能被4整除,且不能被100整除 或 能被400整除/* ex5-4.c */* ex5-4.c */ main()main() int year,leap; int year,leap;scanf(“%d“, scanf(“%d“,leap = 0; leap = 0;if( (year%4=0 if( (year%4=0 if(leap=1) if(leap=1)printf(“%d is a leap year”,year);printf(“%d is a le

10、ap year”,year);else elseprintf(“%d is not a leap year”,year); printf(“%d is not a leap year”,year); 2000 2000 is a leap year1998 1998 is not a leap year/*定义变量leap表示输入的年份是否是闰年*/*输入变量year的值*/*假设此年不是闰年*/*如果是闰年,变量leap = 1*/ If 语句嵌套: 在if语句中又包含一个或多个if语句,称为if语句嵌套 一般形式:if (exp1)if (exp2) statement1else stat

11、ement2 elseif (exp3) statement3else statement4内嵌if内嵌ifif (exp1)if (exp2) statement1else statement2内嵌ifif (exp1)if (exp2) statement1 elsestatement2内嵌ifIf else配对原则 :它缺省时, else总是与上 面的 最近的 未配对的 if配对 if (exp1) if (exp2) statement1 elsestatement2 例5-5 有一函数:编一程序输入一个x值输出y值 分析 输入x 若x y =-1 否则 若 x=0 = y=0 若 x

12、0 = y=1 输出y开始输入xy=-1x=0y=0y=1输出yx=0) if(x0) y=1;else y=0;else y=-1;y=-1;if (x!=0)if (x0) y=1;else y=0;y=0;if (x=0)if (x0) y=1;else y=-1;例5-6 求方程 的解 #include #include main()main() float a, b, c ,disc, x1, x2, p, q; float a, b, c ,disc, x1, x2, p, q;scanf(“%f,%f,%f“, scanf(“%f,%f,%f“,printf(“the equat

13、ion “); printf(“the equation “);if( if(fabs(a)1e-6disc1e-6) ) x1=(-b+sqrt(disc)/(2*a); x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a);printf(“has distinct real roots:%8.4 printf(“has distinct real roots:%8.4 8.4f”,x1,x2);8.4f”,x1,x2); else else p=-b/(2*a); p=-b/(2*a);q=sqrt

14、(-disc)/(2*a); q=sqrt(-disc)/(2*a);printf(“has complex roots:n”); printf(“has complex roots:n”);printf(“%8.4f+%8.4fin”,p,q); printf(“%8.4f+%8.4fin”,p,q);printf(“%8.4f-%8.4fin”,p,q); printf(“%8.4f-%8.4fin”,p,q); switch(switch(表达式表达式) ) case E1: case E1:语句组语句组 1;1;break;break;case E2: case E2:语句组语句组 2;2;break;break;. .case En: case En:语句组语句组 n;n;break;break; default: default:语句组语句组 n+1;n+1;break;break; switch语句(开关分支语句) 格式执行过程switchswitch表达式表达式语句组语句组1 1语句组语句组2 2语句组语句组n n语句组语句组E1E1E2E2EnEndefaultdefaultcase case switchswitchscorescore打印打印“Very good!”Very good!”5 54 43 3defaultdefaul

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号