C程序的流程设计第三章_第1页
C程序的流程设计第三章_第2页
C程序的流程设计第三章_第3页
C程序的流程设计第三章_第4页
C程序的流程设计第三章_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

C程序的流程设计第三章C语言的结构C语言的三大结构:顺序结构、选择结构和循环结构S1S2S3(a)顺序结构

PS1S2真假(b)选择结构

PS2假真(c)循环结构

本章内容提要判断选择型程序设计

3.13.2循环型程序设计

3.3综合应用

3.4本章小结

3.5思考题

3.6本节知识点C语言中的逻辑值1关系运算符与关系表达式2逻辑运算符与逻辑表达式3if…else结构的应用4if-elseif结构的应用5if语句的嵌套应用6重点关系和逻辑运算1if语句的应用2难点前面学过的运算符和表达式?比较?并且?判断是针对命题的“真”、“假”进行的。3.1.1命题的“真”、“假”与C语言中的逻辑值例如,下面一些命题:1、小强是个大学生2、今天下雨了3、a≥34、a≥b≥c5、a≥5或c≥4关系表达式和逻辑表达式是C语言中描述命题的两种基本形式关系运算是逻辑运算中比较简单的一种,“关系运算”就是“比较运算”,指对两个表达式值的大小比较。3.1.2关系运算符C语言中提供有如下6个关系运算符:<,<=,>,>=,==,!=例3.1

a>3inta=5;inta=2;结果为真(True)结果为假(False)3.1.2关系表达式用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式等)连接起来所构成的表达式,称为关系表达式。例3.2:

c>a+b

a>b==c

a==b<c

a=b>c

等效于c>(a+b)等效于(a>b)==c等效于a==(b<c)等效于a=(b>c)1、表达式5>2>7>8在数学上允许否?在C中是否允许?关系表达式注意问题:按自左而右的结合求解:①5>2值为1;②1>7值为0;③0>8的值为0。即整个关系表达式的值为0。2、由于关系表达式的值是整型数0或1,故也可以将其看成是一种整型表达式。例如,若有:

inti=1,j=7,a;a=i+(j%4!=0);关系表达式注意问题:这种表达式的含义不易被理解,初学时不宜多用3、在判定两个浮点数是否相等时,由于存储上的误差,会得出错误的结果。例如:

1.0/3.0*3.0==1.0关系表达式注意问题:该关系表达式的值为0(假),并不为1(真)。所以应避免对两个实数表达式作“相等”或“不相等”的判别。上式可改写为:

fabs(1.0/3.0*3.0-1.0)<1e-5fabs是求绝对值函数。只要1.0/3.0*3.0与1.0之间的差小于10-5(或一个其它的很小的数),就认为1.0/3.0*3.0与1.0相等。4、要表示x在区间[a,b]中,在数学中使用表达式a≤x≤b可否?在C语言中使用表达式“a<=x<=b”可否?关系表达式注意问题:假设a=0;b=0.5。若x=0.3上式可改写为:

a<=x并且x<=b3.1.3逻辑运算符与逻辑表达式ABBAA(a)“与”

(b)“或”

(c)“非”

三个基本逻辑运算

3.1.3逻辑运算符C语言提供三种逻辑运算符:1、&&逻辑与(相当日常生活中:而且,并且,只在两条件同时成立时为“真”)2、||逻辑或(相当日常生活中:或,两个条件只要有一个成立时即为“真”)3、!逻辑非(条件为真,运算后为假,条件为假,运算后为真)3.1.3逻辑表达式用逻辑运算符(逻辑与、逻辑或、逻辑非)将关系表达式或逻辑量连接起来构成逻辑表达式。例3.3:

a>b&&x>ya==b||x==y

!a||a>b

等效于(a>b)&&(x>y)等效于(a==b)||(x==y)等效于(!a)||(a>b)1、在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。a&&b&&ca||b||c逻辑表达式注意问题:例3.4:如果a,b,c,d,m,n分别为:1,2,3,4,1,1分析整个表达式(m=a>b)&&(n=c>d)结果和m,n的结果。2、如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象(原值),哪些是作为逻辑运算的对象(逻辑值)。逻辑表达式注意问题:例3.5:计算:5>3&&2||8<4-!0关系和逻辑表达式应用掌握C语言的关系运算符和逻辑运算符后,可以用一个逻辑表达式来表示一个复杂的条件。例3.6:判断某一年是否闰年。闰年的条件是符合下面两个条件之一:

1、能被4整除,但不能被100整除;

2、能被4整除,又能被400整除。(year%4==0&&year%100!=0)||year%400==0考虑:判断非闰年的条件?3.2if选择语句的应用PS1S2真假选择结构

3.2if选择语句的应用if语句用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的几种操作之一。if语句

单分支结构

双分支结构

多分支结构if语句的嵌套3.2.1单分支结构if语句格式:if(表达式)语句;

引例:如果学生成绩(score)不低于60分,则输出“合格”3.2.1双分支结构if语句

格式:if(表达式)语句1;else语句2;

引例:如果学生成绩(score)不低于60分,则输出“合格”,否则输出“不合格”。3.2.2多分支结构if语句

引例:如果学生成绩(score)不低于90分,则输出“优秀”;如果80≤score<90,则输出“良好”;如果70≤score<80,则输出“中等”;如果60≤score<70,则输出“合格”;如果score<60,则输出“不合格”。3.2.2多分支结构if语句分析一:单分支结构if(表达式)语句;特点:满足条件即执行语句程序段:if(score>=90)printf(“优秀”)if(score>=80&&score<90)printf(“良好”)if(score>=70&&score<80)printf(“中等”)if(score>=60&&score<70)printf(“合格”)if(score<60)printf(“不合格”)缺点:条件表达式复杂且if语句过多3.2.2多分支结构if语句分析二:双分支结构可以实现不?3.2.2多分支结构if-elseif语句分析三:多分支结构格式:

if(表达式1)

语句1;

elseif(表达式2)

语句2;elseif(表达式3)

语句3;…elseif(表达式m)

语句m;else语句m+1;思考--如何写程序?有无其他方法?3.2.3if语句的嵌套应用在if语句中又包含一个或多个if语句称为if语句的嵌套。格式为:3.2.3if语句的嵌套应用如果学生成绩(score)不低于90分,则输出“优秀”;如果80≤score<90,则输出“良好”;如果70≤score<80,则输出“中等”;如果60≤score<70,则输出“合格”;如果score<60,则输出“不合格”。说明:1、三种形式的if语句中的“表达式”一般为关系表达式或逻辑表达式,但不限于这两种表达式。例如:if(‘a’)printf(“%d”,’a’);能运行否?

说明:2、else子句不能单独使用,必须是if语句的一部分,与if配对使用。例如:if(‘a’)printf(“%c”,’a’);elseprintf(“%c”,’b’);elseprintf(“%c”,’c’);

说明:3、在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句构成的语句块(复合语句)。语句块用{

}括起来。例如:求边长分别为a,b,c的三角形面积?

if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(area);}elseprintf(“itisnotatriangle”);说明:4、if嵌套语句中,应当注意if与else的配对关系,else总是与它上面的最近的未配对的if配对。特别是if/else子句数目不一样时本意实际说明:5、if嵌套语句解决匹配问题方法(1)利用空语句使if子句数量与else子句数量相同。(2)利用{}。将没有else子句的if语句用{}括起来思考题一:函数:-1(x<0)y=0(x=0)1(x>0)编一个程序,输入x,输出y。有以下几个程序,请判断哪个是正确的?思考题一:程序1:

main()

intx,y;

scanf("%d",&x);

if(x<0)y=-1;

elseif(x==0)y=0;

elsey=1;

printf("x=%d,y=%d\n",x,y);}思考题一:程序2:

main()

intx,y;

scanf("%d",&x);

if(x>=0)if(x>0)y=1;

else

y=0;

else

y=-1;

printf("x=%d,y=%d\n",x,y);}思考题一:程序3:

main()

intx,y;

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

elsey=0;

printf("x=%d,y=%d\n",x,y);}思考题一:程序4:

main()

intx,y;

scanf("%d",&x);

y=0;

if(x>=0)if(x>0)

y=1;

elsey=-1;

printf("x=%d,

温馨提示

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

评论

0/150

提交评论