大学c语言chapter4

上传人:小** 文档编号:54582671 上传时间:2018-09-15 格式:PPT 页数:28 大小:558.50KB
返回 下载 相关 举报
大学c语言chapter4_第1页
第1页 / 共28页
大学c语言chapter4_第2页
第2页 / 共28页
大学c语言chapter4_第3页
第3页 / 共28页
大学c语言chapter4_第4页
第4页 / 共28页
大学c语言chapter4_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《大学c语言chapter4》由会员分享,可在线阅读,更多相关《大学c语言chapter4(28页珍藏版)》请在金锄头文库上搜索。

1、第4章 选择分支结构程序设计,1,选择结构,根据给定的条件是否满足, 决定从给定的条件选择其一。,分为:,二路分支,多路分支,if else语句,switch语句,2,1.简单的if语句,形式:,if (表达式) 语句,执行过程:,如果表达式值非0,执行该语句,然后执行if的下一个语句;否则直接执行if的下一个语句。,例: main() int a,b,max;printf(”n 请输入两个数: ”);scanf(”%d%d”,4.1 if 语句,3,例: 输入三个整数x、y、z, 把这三个数由小到大输出。,#include main() int x,y,z,t;printf(“Please

2、input the x,y,z: ”);scanf(“%d%d%d”, ,4,4.2 if 语句,2.if/else,语句形式:,if (表达式) 语句1 else 语句2,执行流程:,如果表达式值非0,执行语句1;否则,执行语句2;无论执行了哪一路分支之后,都执行if的下一条语句。,例 if(xy) max=x;else max=y;printf(”max=%d”,max);,5,例.判断给定的某一年是否是闰年。,分析:如果某年能被4整除而不能被100整除,或者能被400整除,那么该年就是闰年,否则就是平年。,if(year%4=0&year%100!=0|year%400=0),#incl

3、ude main() int year,leap=0;printf(“n请输入年份(yyyy):“);scanf(“%d“, ,6,例.制作简单的猜数字游戏。程序运行时 自动产生15之间的随机数,接着等待 键盘输入猜的数字。如果猜对了,显示 “猜对了”相关信息;否则,如果猜错了, 则显示“猜错了”相关信息。,7,分析:如何产生15之间的随机数?,1)随机数产生: C语言提供srand()函数,配合rand()函数可产生介于 032767之间的随机数(函数均包含在stdio.h中)。 srand(unsigned)time(NULL); /*以做随机数产生器的种子, time()函数包含在tim

4、e.h中 */ guess=rand(); /*以上面得到的种子产生032767的整数*/ 2)15之间的随机数: 首先用rand()函数产生的随机数,然后对5求余 (rand()5),产生04之间的整数,然后再加1, 即rand()5+1就产生15之间的整数。,#include #include main() int data, guess;srand(unsigned)time(NULL);data=rand()%5+1;printf(“请输入要猜的数字(限1-5 ):“);scanf(“%d“, ,8,例:一个5位数,判断它是不是回文数,即12321是回文数,个位与万位相同,十位与千位相

5、同。,分析:分解出每一位数(万位、千位、十位和个位),然后判断。,main() long x; int ge,shi,qian,wan;printf(“ please input the 5 bits number:n“);scanf(“%ld“, ,9,10,例:,main( ) float x,y;printf(“Input x:“);scanf(“%f“,11,分析:根据输入字符的ASCII码来判别类型。,例.编写程序,要求判别键盘输入字符的类别。,#include“stdio.h“ main() char c;printf(“n Please input a character :n“

6、);c=getchar();if(c=0 ,12,说明:,(1) 三种形式的if语句中都出现的“表达式”,不只限于逻辑和关系表达式,可以是任何类型的;,(2) if语句中,判断条件表达式必须用( )括起来,条件后面不加分号,但语句之后有分号;,(4) if 和else 后的语句可以只有一条,也可以使用 包括的几条语句构成的复合语句。,(3) else不是语句,不能单独使用,与if配对使用;,(5) if(x) if(x!=0),(6) if(!x) if(x=0),13,例 考虑下面程序的输出结果,#include main() int x,y,t;scanf(“%d%d”, ,Compile

7、 Error!,14,if 语句的嵌套,在if语句中:if (表达式) 语句1else 语句2 语句1和语句2都可以是另外一条if语句,if (表达式1)if (表达式2) 语句1else 语句2 else if (表达式3) 语句3else 语句4,if (表达式1) 语句1 else if (表达式2) 语句2else 语句3,if (表达式1)if (表达式2) 语句1else 语句2else 语句3,15,说明:,(1) else 总是与最近的if匹配;,(2) else不能单独出现,总是与if配对使用。,16,例:,main( ) int x=2,y=-1,z=2;if(xy) if

8、(y0) z=0;else z+=1;printf(“z=%dn”,z); ,z=2,17,编写原则:,1、顺序执行的语句对齐;,2、选择体向内缩进34字符;,3、若选择体内嵌套if语句,则该if语句的选择体亦继续向内缩进;,4、若选择体内的语句多于1条,则必须使用 括起来;,5、原则上,选择体内只有一条语句时,可以不使用 括起来,但如果该语句分成多行编写时,则使用 具有更强的可读性。,main( ) ;if ( ab ); if( cd ); else; ,18,4.2 多路分支switch 语句,用来实现多路分支,形式:,switch (表达式) case 常量1:语句序列1 ; brea

9、k;case 常量2:语句序列2 ; break; case 常量n:语句序列n ; break;default: 语句序列n+1 ;,19,执行过程:,首先计算表达式的值, 若该值与某个case后 面的常量相等, 则执行其后的语句序列, 遇 到break语句时, 跳出switch 语句; 如果表 达式的值与所有常量都不相等,若存在default 则执行其后的语句序列,否则什么也不做。,20,说明:,switch语句中的表达式可以为任何类型, 一般为 整型或字符型, 相应地常量的类型应与其相同;,2. 同一switch语句的各case常量值, 必须互不相同;,3. case常量相当于语句标号;

10、 执行switch语句时, 找到 与表达式值相等的某case常量, 从此标号开始执行下去,对以后的标号不再比较, 直到“”为止; 一般应该在每个 case后的语句序列跟一个 break 语句以便跳出switch正 确实现多分支, 可认为break语句是case中的一部分。,4.各个case后面的default语句出现的次序不影响结果;,5.多个case可以共用一组执行语句.,21,例,main( ) int i=10;switch(i) case 9: i+=1;case 10: i+=1;case 11: i+=1;default: i+=1; printf(“i=%d”,i); ,i=13

11、,22,例,main( ) int a=1,b=0;switch(a) case 1: switch(b) case 0:printf(“*0*”);break;case 1:printf(“*1*”);break;case 2:printf(“*2*”);break; ,*0*2*,23,分析:求解此方程的解,应该考虑到各种可能的情况: 当a=0时,不是二次方程。 否则: 1)当b2-4ac=0 时,方程有两个相等的实根。 2)当b2-4ac0 时,方程有两个不相等的实根。 3)当b2-4ac0 时,方程有两个共轭的复根。,4.3 选择分支结构程序举例,例. 求ax2+bx+c=0方程的解。

12、,#include #include main() float a,b,c,disc,x1,x2,realpart,imagpart;printf(“n请输入方程的三个系数:(a=,b=,c=)n“);scanf(“a=%f,b=%f,c=%f“, ,24,例4-15:查询自动贩卖机中商品的价格。,25,例.一个超市商品信息管理系统,试编写主程序部分实现简单的菜单选择功能。,#include”stdio.h” main() int choice; printf(“nnn *超市管理系统*nn“);printf(“ 1. 录入商品信息nn“);printf(“ 2. 打印商品信息nn“);pri

13、ntf(“ 3. 更新商品信息nn“);printf(“ 4. 商品信息查询nn“);printf(“ 5. 商品信息统计nn“);printf(“ 6. 商品销售排行nn“);printf(“ 0. 退出系统nn“);printf(“ 请选择(0-6):“);scanf(“%d“, /*退出系统*/ ,26,例. 请输入星期几的第一个字母来判断是星期几,如果第一个字母一样,则继续判断第二个字母。,#include main() char letter;printf(“请输入某一天的第一个字母:(S/F/M/T/W)n“);scanf(“%c“, ,27,作 业,P75. 4.2, 4.3, 4.6, 4.7,28,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 宣传企划

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