第3章基本程序设计1_第1页
第3章基本程序设计1_第2页
第3章基本程序设计1_第3页
第3章基本程序设计1_第4页
第3章基本程序设计1_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章第三章模式模式1模式模式2模式模式3备注备注ifif(exprexpr) 语句语句s1 s1 ifif(exprexpr) 语句语句s1s1elseelse 语句语句s2s2ifif(expr1expr1) 语句语句s1s1else ifelse if (expr2expr2) 语句语句s2s2else ifelse if (expr3expr3) 语句语句s3s3 elseelse 语句语句snsn语句语句s1,s2,s3sn可以是简单语可以是简单语句,也可以是句,也可以是复合语句。复合语句。如如果是复合语句果是复合语句语句,必须用语句,必须用一对花括号一对花括号“ ”括起来括起来3.

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

3、件的多条件的if if语句语句语句格式语句格式: if (条件条件1) 语句语句1; else if (条件条件2) 语句语句2; else if (条件条件3) 语句语句3; else if (条件条件m) 语句语句m; else 语句语句n; 语句语句1n条件条件1y条件条件2条件条件nyy语句语句2 语句语句3语句语句nnn功能:功能:从多组语句中选择满足条从多组语句中选择满足条件的语句组执行。件的语句组执行。6(1)三种形式的)三种形式的if语句中,语句中,if关键词后面均为关键词后面均为表达式。通常为表达式。通常为关系表达式关系表达式或或逻辑表达式逻辑表达式。也。也可以是其它表达式,

4、如可以是其它表达式,如赋值表达式赋值表达式,甚至也可,甚至也可以是以是一个变量一个变量。例如:例如:if (a=5) 语句;或语句;或 if (b) 语句;均为合法语句;均为合法用法用法(2)if 后的条件判断表达式一定用圆括号括后的条件判断表达式一定用圆括号括起来,语句之后一定起来,语句之后一定 要用分号。要用分号。 使用使用if语句时注意:语句时注意:7(3)三种形式中)三种形式中,若为一组语句一定用若为一组语句一定用 括括起来,组成起来,组成复合语句复合语句。但需注意。但需注意 后不可用后不可用 “;”号。号。例如:例如:if (ab) a+; b+; else a=0;b=10;8有一

5、函数有一函数编写一个程序,输入编写一个程序,输入x输出输出y值。值。0, 10, 00, 1xxxy main( ) int x, y; scanf( “%d”, &x ); if( x =0) if(x0) y=1; else y=0; else y=-1; printf( “x = %dty = %dn”, x. y );方法二:方法二:运行:23x=23,y=19一般形式:一般形式: if (表达式表达式1) if (表达式表达式2) 语句语句1 内嵌内嵌 else 语句语句 2 if 语句语句 else if (表达式表达式3) 语句语句3 内嵌内嵌 else 语句语句4 if 语句语

6、句if 语句中又含有语句中又含有if 语句的形式称为语句的形式称为 if 语句的语句的嵌套。嵌套。10说明:说明: 每一个每一个 if 与与 else 相匹配,也可能不与相匹配,也可能不与 else 相相匹配;但是匹配;但是每一个每一个else 必须与一个必须与一个 if 相匹配相匹配。 else与与if 匹配的原则是匹配的原则是: 最后的最后的else总是与它上总是与它上面面最近的最近的if 配对。配对。 多分支及分支嵌套应采用缩排方式,以增加多分支及分支嵌套应采用缩排方式,以增加程序的可读性。程序的可读性。11例:例: if (a=b) if(b=c) printf(“a=b=c”); e

7、lse printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);实现实现if else 正确配对方法:加正确配对方法:加 12例例 考虑下面程序输出结果考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; /*x=-1;*/ printf(“%d”,x); 结果:结果:100结果:结果:-1x=-1;例:体型判断例:体型判断按按“体指数体指数”对肥胖

8、程度进行划分:对肥胖程度进行划分: 体指数体指数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 h,w:);scanf(%f%f, &h, &w);t = w /

9、(h * h);if (t = 18 & t = 25 & t = 27) printf(t=%fttoo fat!n, t);当当t 18时,为低体重;时,为低体重;当当18 t 25时,为正常体重;时,为正常体重;当当25 t 27时,为超重体重;时,为超重体重;当当t 27时,为肥胖。时,为肥胖。#include main() float h, w, t;printf(please enter h,w:);scanf(%f%f, &h, &w);t = w / (h * h);if (t 18)printf(t=%ftlower weight!n, t);else if (t 25)pr

10、intf(t=%ftstandard weight!n, t);else if (t 27)printf(t=%fthigher weight!n, t);elseprintf(t=%fttoo fat!n, t);例例当当t 18时,为低体重;时,为低体重;当当18 t 25时,为正常体重;时,为正常体重;当当25 t 27时,为超重体重;时,为超重体重;当当t 27时,为肥胖。时,为肥胖。【例【例3-63-6】程序举例】程序举例运输公司对用户计算运费。运输公司对用户计算运费。路程()越远,每公里运费越低。标准如下:路程()越远,每公里运费越低。标准如下: 没有折扣没有折扣 折扣折扣 折扣折

11、扣 折扣折扣 折扣折扣 折扣折扣设每公里每吨货物的基本运费为,货物重为,设每公里每吨货物的基本运费为,货物重为,距离为,折扣为,则总运费的计算公式为:距离为,折扣为,则总运费的计算公式为:* * * *()() ifif(s250) d=0;(s250) d=0; elseelse ifif(s500) d=2;(s500) d=2; else ifelse if(s1000) d=5;(s1000) d=5; elseelse ifif(s2000) d=8;(s2000) d=8; elseelse ifif(s3000) d=10;(s3000) d=10; elseelse d=15;

12、 d=15;1.1.嵌套条件语句实现嵌套条件语句实现折扣的折扣的“变化点变化点”都是都是250250的倍数的倍数 在横轴上加一种坐标,在横轴上加一种坐标,c c的值为的值为s/250s/250。c c代表代表250250的倍数。的倍数。 , 无折扣;无折扣;, ;, ;, ;, ; , 。 考虑用考虑用switchcase switchcase 结构结构switch(c) case 0:d=0;break; case 1:d=2;break; case 2:case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case

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

14、逻辑关它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错系显得混乱,不易维护,易出错21f3.2 循环结构设计循环结构设计22for循环说明:循环说明:(1)最简单的应用形式:)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值)语句(循环变量赋初值;循环条件;循环变量增值)语句 例如:例如:for(i=1;i=10;i+) s=s*i;(2)三个表达式均可缺省,但起分割作用的两个分号)三个表达式均可缺省,但起分割作用的两个分号不可省不可省。 例如:例如:for( ; ; ) 等效于等效于 while(1) 表达式表达式1省略,应在省略,应在for之前对循环变量赋初值

15、之前对循环变量赋初值i=1; for(;i=5;i+) printf(“%dn”,i);for(i=1;i=5;i+)printf(“%dn”,i);23表达式表达式2省略,则不判断条件,循环无终止进行下去省略,则不判断条件,循环无终止进行下去表达式表达式3省略,则应另设法保证循环的结束省略,则应另设法保证循环的结束 此功能一定在循环体中完成此功能一定在循环体中完成 例:例:for(i=1;i=5;) printf(“%dn”,i); i+; (3)表达式)表达式1和表达式和表达式3可为逗号表达式可为逗号表达式,因此可以对因此可以对 多个变量赋初值及修改多个变量赋初值及修改 例如:例如:for

16、(i=1,j=10;i=j;i+,j-) k=i+j;原则上表达式原则上表达式2不可省略,若省略需要在循环体中用不可省略,若省略需要在循环体中用其它手段(其它手段(break、goto等)结束循环等)结束循环 。24(4 4)for 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-whiledo-while语句语句 dodo 语句语句; while( while(表达式表达式) ); 功能:先执行

17、循环体,然后计算表达式值,功能:先执行循环体,然后计算表达式值,其值若为真(非其值若为真(非0)则继续执行循环体,直)则继续执行循环体,直到表达式为假时为止。到表达式为假时为止。 【例】【例】whilewhile和和do-whiledo-while循环的比较循环的比较 (1) void main() int i,sum=0; scanf(%d,&i); while(i=10) sum=sum+i; i+; printf(“sum=%dn”,sum); (2) void main()int i,sum=0;scanf(%d,&i); do sum=sum+i; i+; while(i=10);

18、printf(sum=%dn,sum); 循环至少循环至少执行一次执行一次循环没有循环没有被执行被执行输入:输入:12输出:输出:sum=12输入:输入:12输出:输出:sum=0三种循环语句的比较三种循环语句的比较1 1for for 语句与语句与whilewhile语句执行过程相同,但语句执行过程相同,但forfor语语句简洁、清晰,它将初始条件、判断条件和循环句简洁、清晰,它将初始条件、判断条件和循环变量的在一行书写,显得直观、明了。变量的在一行书写,显得直观、明了。2 2while while 和和do-whiledo-while语句的循环控制变量初始化语句的循环控制变量初始化是在循环

19、语句之前完成,而是在循环语句之前完成,而forfor语句循环变量的初语句循环变量的初始化是在始化是在forfor中(表达式中(表达式1 1)中,也可以在)中,也可以在forfor语句语句前实现。前实现。3 3forfor语句和语句和whilewhile语句是判断条件后执行循环体;语句是判断条件后执行循环体;而而do-whiledo-while是先执行循环体后判断条件,无论条是先执行循环体后判断条件,无论条件是否满足都要执行一次循环体。件是否满足都要执行一次循环体。 选择三种循环的一般原则选择三种循环的一般原则如果循环次数已知,用如果循环次数已知,用for如果循环次数未知,用如果循环次数未知,用

20、while如果循环体至少要执行一次,用如果循环体至少要执行一次,用do-while这只是这只是“一般一般”原则,不是原则,不是“原则原则”注意注意在在for和和while语句之后一般没有分号语句之后一般没有分号有分号表示循环体就是分号之前的内容(空循环体)有分号表示循环体就是分号之前的内容(空循环体) while (i 100); i+; for (i = 0; i 100; i+); printf(%d, i);for通常有一个循环变量控制循环的次数,不要在循通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量环体内改变这个变量循环嵌套结构规划循环嵌套结构规划外循环外循环内循环内循环

21、交叉循环交叉循环外循环外循环入口入口内循环出口内循环出口内循环出口内循环出口外循环出口外循环出口循环嵌套循环嵌套在循环体中,又包在循环体中,又包含有循环结构即构含有循环结构即构成循环嵌套成循环嵌套1 2 3 4 5 6 7 8 9-12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81行循环行循环中包含中包含列循环列循环5.2.1 5.2.1 switchswitch语句格式语句格式输出下三角形乘法九九表输出下三角形乘法九九

22、表1 2 3 4 5 6 7 8 9-12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81思路:行号为思路:行号为i,列号为,列号为j(1=i=9)(1=j=i) 则:第则:第 i 行中一共要行中一共要输出输出 i 个乘积个乘积i=7j=5i*j#include main ( ) int i=1, j; /* i:行计数器行计数器 j:列计数器列计数器 */ while (i = 9 ) /* 控制打印表头控制打印表头 *

23、/ 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 */ 打印九九乘法表打印九九乘法表( (三角形三角形) )内循环终内循环终值与外循值与外循环变量有环变量有关关用用forfor语句实现打印乘法九九表语句实现打印乘法九九表( (三角形三角形) )#include main ( ) int i, j; for ( i=1; i10; i+ ) printf (“%4d”,i); /* 打印表头打印表头 */ prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论