(c程序结构及控制语句--9课时)

上传人:san****019 文档编号:70853871 上传时间:2019-01-18 格式:PPT 页数:101 大小:1.70MB
返回 下载 相关 举报
(c程序结构及控制语句--9课时)_第1页
第1页 / 共101页
(c程序结构及控制语句--9课时)_第2页
第2页 / 共101页
(c程序结构及控制语句--9课时)_第3页
第3页 / 共101页
(c程序结构及控制语句--9课时)_第4页
第4页 / 共101页
(c程序结构及控制语句--9课时)_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《(c程序结构及控制语句--9课时)》由会员分享,可在线阅读,更多相关《(c程序结构及控制语句--9课时)(101页珍藏版)》请在金锄头文库上搜索。

1、1,第5章 C程序结构及控制语句,2,学习目标,理解并熟练运用C语言的顺序、选择、循环控制语句进行编程。 培养良好的编程风格。,3,学习内容,4,顺序结构概念,程序中的语句是按照编写时的顺序自上而下,一条接一条地执行的,这一过程称为顺序执行。 顺序结构程序三步曲是输入、计算、输出。,5,顺序结构例5.1,要求:输入三角形的三边长,求三角形面积。 海伦公式: ; s=(a+b+c)/2。,#include #include void main() float a,b,c,s,area; scanf(“%f,%f,%f“, ,6,顺序结构例5.3,交换数据。对输入的两个变量a、b,交换它们的值并输

2、出。 请思考一个问题: 现有两个500ML的瓶子,一个里面装着醋,一个里面装着酱油,请问如何交换两个瓶子的液体?,7,顺序结构例5.3,醋,酱油,1,醋,酱油,醋,酱油,2,醋,酱油,A,B,C,D,8,顺序结构例5.3,醋,酱油,3,醋,酱油,醋,酱油,醋,酱油,E,F,G,H,9,顺序结构例5.3,引入第三个瓶子! 两个变量的交换亦是如此!,10,顺序结构例5.3,交换数据。对输入的两个变量a、b,交换它们的值并输出。,#include void main() int a,b,c; printf(“Please input two integers:”); scanf(“%d%d”, ,1

3、1,选择结构,选择结构又称分支结构或者选取结构。 if 语句 switch语句,12,选择结构if语句格式一,格式1:if (表达式) 语句 功能:如果表达式为真,则执行其后的语句,否则不执行语句。 例如:if (ab) max=a;,13,选择结构if语句格式二,格式2:if (表达式) 语句1 else 语句2 功能:如果表达式为真,则执行语句1;否则执行语句2。 例如: if (ab) max=a; else max=b;,14,选择结构if语句格式三,格式3:if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else if (表达式

4、n) 语句n else 语句n +1,功能:依次判断表达式的值,当出现某个值为真时,则执行对应语句,然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。,15,选择结构if语句格式三,根据用户购物的总价Cost,选择不同的折扣率Rate。 Cost1000 七折 800Cost=1000 八折 500Cost=800 九折 Cost=500 无折扣,16,选择结构if语句格式三,if (Cost1000) Rate=0.7; else if (Cost800) Rate=0.8; else if (Cost500) Rate=0.9; else

5、 Rate=1.0;,if (Cost1000) Rate=0.7; if (Cost800) Rate=0.8; if (Cost500) Rate=0.9; if(Cost=500) Rate=1.0;,17,选择结构if语句说明,if关键字之后均为表达式。该表达式可以是逻辑表达式、关系表达式以及其它表达式。 在if语句中的条件判断表达式必须用圆括号括起来,每个语句之后必须加分号。 else子句不能作为语句单独使用,须与if配对使用。,18,选择结构if语句说明,如果在满足条件时执行一组(多个)语句,则必须把这一组语句用“”括起来组成一个复合语句。 “”之后不加分号。,if(ab) a+;

6、 b+; else a=0; b=1; ,19,选择结构if语句说明,在if语句的表达式中,一定要避免判断实数与零值的等值比较。 因为无论是float还是double变量,都有精度限制。应使用=、=来替代=、!=。 float x; if(x=0) 改为: #define EPS 1E-7 float x; if( fabs(x)EPS ) /表达式的含义为x的值为0,20,选择结构if语句举例,【例】输入两个实数,输出两个数的最大值。 #include void main() float a,b; scanf(“%f,%f“, 运行情况如下: 3.6,-3.2 3.60,21,选择结构if语

7、句的嵌套,如果if语句中的执行语句又是一个if语句,就构成了if语句嵌套的情形。 格式:if (表达式) if语句 或者:if (表达式) if语句 else if语句,if (ab) if (b0) printf(“ab0n”); else printf(“ab,b0) printf(“b=a0n”); else if (a=0) printf(“b=a=0n”); else printf(“b=a,a0n”);,在多重嵌套时,else总是与在它之前出现的、尚未匹配的且离它最近的if匹配。,22,选择结构if语句的嵌套,注意: 在多重嵌套时,else总是与在它之前出现的、尚未匹配的且离它最近

8、的if匹配。 可能会更改配对的原则。 一般情况下,较少使用if语句的嵌套结构,以使程序更便于阅读理解。,23,选择结构if语句的嵌套例,例:有一函数: -1(x0) 编一程序: 输入一个x值,输出y值。,24,选择结构if语句的嵌套例,有以下几个程序,请判断哪个是正确的,哪个是错误的? 程序1: void main() int x,y; scanf(“d“,&x); if(x0) y=-1; else if(x=0) y=0; else y=1; printf(“x=d,y=dn“,x,y); 正确,25,选择结构if语句的嵌套例,程序2: void main() int x,y; y=-1;

9、 scanf(“d“,&x); if(x!=0) if(x0) y=1; else y=0; /else与第二个if配对 printf(“x=d,y=dn“,x,y); 错误 请思考:错误的原因是什么?,26,选择结构if语句的嵌套例,程序2修改如下: void main() int x,y; y=-1; scanf(“d“,&x); if(x!=0) if(x0) y=1; else y=0; /else与第一个if配对 printf(“x=d,y=dn“,x,y); 说明:更改了配对的原则,27,选择结构switch语句,格式:switch (表达式) case 常量表达式1:语句1 ca

10、se 常量表达式2:语句2 case 常量表达式n:语句n default: 语句n+1 ,28,选择结构switch语句,N-S图,功能: 将表达式的值逐个与其后的常量表达式进行比较。 当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。,29,选择结构switch语句,#include void main() int a; scanf(“%d”, ,运行情况如下: 5 Friday Saturday Sunday error,30,选择结构switc

11、h语句,#include void main() int a; scanf(“%d”, ,加break,运行情况如下: 5 Friday,31,选择结构switch语句,#include void main() int a; scanf(“%d”, ,运行情况如下: 7 Sunday,运行情况如下: 8 Sunday,多个case可以共用一组执行语句,32,选择结构switch语句,#include void main() int a; scanf(“%d”, ,运行情况如下: 5 Friday,case分支顺序改变,33,选择结构switch语句,#include void main() i

12、nt a; scanf(“%d”, ,运行情况如下: 1 Monday,case分支语句用括起来,34,选择结构switch语句,说明: 多个case可以共用一组执行语句。 “case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch语句。为了避免上述情况,C提供了break语句。 在case后的各个常量表达式的值不能相同,否则会出现错误。 在case后,允许有多个语句,可以不用括起来。 各个case和default子句的先后顺序可以变动,不影响程序的执行结果。 default子句可以省略不用,此时当表达式的值与所有

13、case后的常量表达式的值不同时,退出switch语句,继续执行后续程序。 switch后面括号中的表达式只能是整型、字符型、枚举类型,case后的常量表达式的类型必须与之匹配。 各个case之后是常量表达式,一定不要试图使用条件表达式或者逻辑表达式。,#include void main() int score; scanf(“%d”, ,35,错误! 该如何实现该程序?,if(score=60) printf(“及格n”); else printf(“不及格n”);,36,switch(score/10) case 0: case 1: case 2: case 3: case 4: ca

14、se 5: printf(“不及格n”); break;,37,case 6: case 7: case 8: case 9: case 10: printf(“不及格n”); break; ,38,选择结构switch语句例5.6,计算器程序。从键盘接收两个运算数和四则运算符,计算并输出结果。,#include void main() float a,b; char c; printf(“input expression: a+(-,*,/)b n“); scanf(“%f%c%f“, ,P93/例5.8 请大家课后阅读,一题多解方法。,39,40,循环结构,在给定条件成立时,反复执行某程序

15、段,直到条件不成立为止,这就是循环结构。 给定的条件称为循环条件 反复执行的程序段称为循环体 在循环变量中用于控制循环执行次数的变量称为循环变量。 C语言提供了三种循环控制语句。 while语句 do-while语句 for语句,41,循环结构while语句,格式:while (表达式) 语句 功能:计算表达式的值,当值为真时,执行循环体。 说明: (1)while语句中的表达式一般是关系表达式或者逻辑表达式,只要值为真就可以继续执行循环体。 (2)如果循环体包含一个以上的语句,必须用括起来构成复合语句。 例:求1100之间所有偶数的和。,42,循环结构while语句例5.9,求1100之间所有偶数的和。,#include void main() int sum=0,n; n=0;/循环变量初始化 while (n=100)/循环执行条件 sum+=n;/循环体 n+=2;/改变循环变量的值 printf(“%dn“,sum); ,分析: int n=0; /n为每一项 int sum=0; /sum为求得的和 while (循环执行条件) 循环体 输出sum的值 所以程序的关键是要确定: 1.循环执

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

当前位置:首页 > 高等教育 > 大学课件

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