第3章基本程序设计1周.ppt

上传人:本田雅阁 文档编号:2986912 上传时间:2019-06-20 格式:PPT 页数:36 大小:733.52KB
返回 下载 相关 举报
第3章基本程序设计1周.ppt_第1页
第1页 / 共36页
第3章基本程序设计1周.ppt_第2页
第2页 / 共36页
第3章基本程序设计1周.ppt_第3页
第3页 / 共36页
第3章基本程序设计1周.ppt_第4页
第4页 / 共36页
第3章基本程序设计1周.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第3章基本程序设计1周.ppt》由会员分享,可在线阅读,更多相关《第3章基本程序设计1周.ppt(36页珍藏版)》请在三一文库上搜索。

1、,第三章,基本程序设计,3.1 选择结构程序设计,if语句的三种基本形式,模式1: 单选择if语句 语句格式: if (条件) 语句组;,功能:判断条件为真时执行语句,否则跳过语句,模式2: 双选择if语句,5.1 if语句,语句格式: if (条件) 语句组1; else 语句组2;,功能:判断条件为真时执行语句组1,否则执行语句组2,模式3: 多条件的if语句,语句格式: if (条件1) 语句1; else if (条件2) 语句2; else if (条件3) 语句3; else if (条件m) 语句m; else 语句n;,功能: 从多组语句中选择满足条件的语句组执行。,(1)三种

2、形式的if语句中,if关键词后面均为表达式。通常为关系表达式或逻辑表达式。也可以是其它表达式,如赋值表达式,甚至也可以是一个变量。 例如:if (a=5) 语句;或 if (b) 语句;均为合法用法,(2)if 后的条件判断表达式一定用圆括号括起来,语句之后一定 要用分号。,使用if语句时注意:,(3)三种形式中,若为一组语句一定用 括起来,组成复合语句。但需注意 后不可用 “;”号。,例如:if (ab) a+; b+; else a=0;b=10;,运行:23 X=23,y=1,if 语句的嵌套:,if 语句中又含有if 语句的形式称为 if 语句的嵌套。,说明: 每一个 if 与 els

3、e 相匹配,也可能不与 else 相匹配;但是每一个else 必须与一个 if 相匹配。 else与if 匹配的原则是: 最后的else总是与它上面最近的if 配对。 多分支及分支嵌套应采用缩排方式,以增加程序的可读性。,例: 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 正确配对方法:加 ,例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v

4、2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; /*x=-1;*/ printf(“%d”,x); ,结果:100,结果:-1,x=-1;,例:体型判断,按“体指数”对肥胖程度进行划分: 体指数t = w / h2 (体重w单位为公斤,身高h单位为米) 当t 18时,为低体重; 当18 t 25时,为正常体重; 当25 t 27时,为超重体重; 当t 27时,为肥胖。 编程从键盘输入你的身高h和体重w,判断你的体重属于何种类型。,例,#include main() float h, w, t; printf(“Please enter

5、h,w:“); scanf(“%f%f“, ,当t 18时,为低体重; 当18 t 25时,为正常体重; 当25 t 27时,为超重体重; 当t 27时,为肥胖。,#include main() float h, w, t; printf(“Please enter h,w:“); scanf(“%f%f“, ,18 25 27,例,当t 18时,为低体重; 当18 t 25时,为正常体重; 当25 t 27时,为超重体重; 当t 27时,为肥胖。,【例3-6】程序举例,运输公司对用户计算运费。 路程()越远,每公里运费越低。标准如下: 没有折扣 折扣 折扣 折扣 折扣 折扣 设每公里每吨货物

6、的基本运费为,货物重为, 距离为,折扣为,则总运费的计算公式为: *(),if(s250) d=0; else if(s500) d=2; else if(s1000) d=5; else if(s2000) d=8; else if(s3000) d=10; else d=15;,1.嵌套条件语句实现,分析折扣变化的规律性:,折扣的“变化点”都是250的倍数 在横轴上加一种坐标,c的值为s/250。 c代表250的倍数。 , 无折扣; , ; , ; , ; , ; , 。,考虑用switchcase 结构,switch(c) case 0:d=0;break; case 1:d=2;bre

7、ak; case 2: case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case 9:case 10:case 11:d=10;break; default:d=15;break; ,2.switch语句实现,switch和else-if的比较,else-if比switch的条件控制更强大一些 else-if可以依照各种逻辑运算的结果进行流程控制 switch只能进行=判断,并且只能是整数判断 switch比else-if更清晰 两者都要尽量避免用得过多、过长,尤其不要嵌套得太多,它们大大增加程序的分支,使逻辑关系

8、显得混乱,不易维护,易出错,for 循环 while循环 do while循环,3.2 循环结构设计,for循环说明: (1)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值)语句 例如:for(i=1;i=10;i+) s=s*i; (2)三个表达式均可缺省,但起分割作用的两个分号不可省。 例如:for( ; ; ) 等效于 while(1) 表达式1省略,应在for之前对循环变量赋初值,i=1; for(;i=5;i+) printf(“%dn”,i);,for(i=1;i=5;i+) printf(“%dn”,i);,表达式2省略,则不判断条件,循环无终止进行下去,表达

9、式3省略,则应另设法保证循环的结束 此功能一定在循环体中完成 例:for(i=1;i=5;) printf(“%dn”,i); i+; (3)表达式1和表达式3可为逗号表达式,因此可以对 多个变量赋初值及修改 例如:for(i=1,j=10;i=j;i+,j-) k=i+j;,原则上表达式2不可省略,若省略需要在循环体中用其它手段(break、goto等)结束循环 。,(4)for 语句的循环体还可为另一个循环语句,for(i=1;i=2;i+) for(j=1;j=2;j+) printf(“%3d”,i+j); printf(“n”); ,output: 2 3 3 4,例如:,do-wh

10、ile语句,do 语句; while(表达式); 功能:先执行循环体,然后计算表达式值,其值若为真(非0)则继续执行循环体,直到表达式为假时为止。,【例】while和do-while循环的比较,(1) void main() int i,sum=0; scanf(“%d“, ,(2) void main() int i,sum=0; scanf(“%d“, printf(“sum=%dn“,sum); ,循环至少 执行一次,循环没有 被执行,输入:12 输出: sum=12,输入:12 输出: sum=0,三种循环语句的比较 1for 语句与while语句执行过程相同,但for语句简洁、清晰,

11、它将初始条件、判断条件和循环变量的在一行书写,显得直观、明了。 2while 和do-while语句的循环控制变量初始化是在循环语句之前完成,而for语句循环变量的初始化是在for中(表达式1)中,也可以在for语句前实现。 3for语句和while语句是判断条件后执行循环体;而do-while是先执行循环体后判断条件,无论条件是否满足都要执行一次循环体。,选择三种循环的一般原则,如果循环次数已知,用for 如果循环次数未知,用while 如果循环体至少要执行一次,用do-while 这只是“一般”原则,不是“原则”,注意,在for和while语句之后一般没有分号 有分号表示循环体就是分号之前

12、的内容(空循环体) while (i 100); i+; for (i = 0; i 100; i+); printf(“%d“, i); for通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量,循环嵌套结构规划,外循环,内循环,交叉循环,外循环 入口,内循环出口,内循环出口,外循环出口,循环嵌套,在循环体中,又包含有循环结构即构成循环嵌套,1 2 3 4 5 6 7 8 9 - 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 2

13、7 36 45 54 63 72 81,行循环中包含列循环,问题:,5.2.1 switch语句格式,输出下三角形乘法九九表,例,1 2 3 4 5 6 7 8 9 - 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81,思路:行号为i,列号为j,(1=i=9),(1=j=i),则:第 i 行中一共要输出 i 个乘积,i=7 j=5 i*j,#include main ( ) int i=1, j; /*

14、 i:行计数器 j:列计数器 */ while (i = 9 ) /* 控制打印表头 */ printf (“%4d“,i+); printf (“n-n“); for (i=1;i=9;i+) /* 行循环入口 */ j=1; /* 列计数器置1 */ while (j=i ) /*嵌套的内循环。输出第i行 */ printf (“%4d”, i*j); /*输出乘积 */ j +; /* 列计数器+1 */ printf (“n“); /* 一行输出结束后,输出n */ ,打印九九乘法表(三角形),内循环终值与外循环变量有关,用for语句实现打印乘法九九表(三角形),#include ma

15、in ( ) int i, j; for ( i=1; i10; i+ ) printf (“%4d”,i); /* 打印表头 */ printf (“n-n“); for ( i=1; i10; i+ ) /* 控制打印表体 */ for ( j=1; j=i; j+ ) printf ( (j=i) ? “%4dn“:“%4d“,i*j); ,若要打印完整的九九乘法表,则哪里需要修改?,穷举法程序设计,从搜索技术角度讲,穷举法可视为最简单的搜索:即是在一个可行状态集合中依次遍历所有的元素,并判断该元素是否为所需要的状态。,使用穷举法时,要恰当地设计变量,并且决定用哪些变量作为搜索的主线,以便穷举出所有可能情况。,一般使用循环结构,要注意循环的起点和终点,对可能的情况不能遗漏,一般也不应重复。,穷举算法基本思想,(1) 明确问题要求,确定枚举对象,用合适类型的变量表示枚举对象。 (2) 明确枚举对象的取值范围。 (3) 根据题目要求,写出有关的条件表达式。这里条件表达式可以是数学表达式、关系表达式或逻辑表达式; (4) 使用循环语句枚举出可能的解,在循环体内验证各种条表达式是否满足; (5) 根据问题背景,优化程序,以便缩小搜索范围,减少程序运行时间。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1