c程序设计第4章 选择结构的语句及流程_第1页
c程序设计第4章 选择结构的语句及流程_第2页
c程序设计第4章 选择结构的语句及流程_第3页
c程序设计第4章 选择结构的语句及流程_第4页
c程序设计第4章 选择结构的语句及流程_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第四章选择结构的语句及流程控制关系运算符和关系表达式逻辑运算符和逻辑表达式条件运算符

if~else语句及三种形式

switch多分支语句

关系运算符主要用于两个量大小的比较。关系运算符列表如下:

运算符名称关系表达式例关系

>大于

a>b

a大于b

<小于q<j

q小于j==等于m1==m2

m1等于m2>=大于等于sum>=m1sum大于等于m1<=小于等于m1<=qm1小于等于q!=不等于c1!=c2

c1不等于c2在关系表达式中,若关系成立,则表达式的值为1,否则为0。(例子c501.c)

关系运算符及关系表达式逻辑运算符列表如下:

运算符名称逻辑表达式例说明

!逻辑非

!a单目运算:非a

&&逻辑与a&&b

a与b||逻辑或a||b

a或b逻辑表达式的结果为真(1)或假(0)值。若:a=b=6;c=8;则:

(a>b)&&(c>a)其值为假(0)(a>b)||(c>a)其值为真(1)!(a==b)&&(c>a)其值为假(0)!4||9其值为真(1)逻辑运算符及逻辑表达式

ab!a!ba&&ba||b

11

0

0

1

1

10

0

1

0

1

01

1

0

0

1

00

1

1

0

0注意:

从上表可以看出对:

A&&b

的计值,若a的值为假则该式的值为假,因此不需要再计b值.

a||b

的计值,若a的值为真则该式的值为真,因此不需要再计b值.(例子c502.c)

也称这样的表达式为短路表达式。逻辑运算的真值表:选择结构

if(条件分支)语句的三种格式:形式1:if(表达式)语句1else语句2

功能:根据表达式的计值,决定其后要执行的操作。若表达式的值非0,则执行语句1,否则执行语句2。例:前边计算三角形面积的程序,不是任意三条边都可组成一个三角形。三角形边的关系:两边之和大于第三边;两边之差小于第三边。完善程序

#include<math.h>main(){floata,b,c,s,area;

printf("inputa,b,c:");

scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a&&fabs(a-b)<c&&fabs(a-c)<b){s=(a+b+c)/2.;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("\narea=%-f",area);}

else

printf("dataerror!!!");}程序c503:表达式语句1语句2选择结构形式2:if(表达式)语句功能:根据表达式的计值,决定其后要执行的操作。若表达式的值非0,则执行语句,否则执行下一个语句。例:求三个数中最大者(c504,c505):main(){inta,b,c,max;

printf("inputa,b,c:");

scanf("%d,%d,%d",&a,&b,&c);

if(a<b)max=b;elsemax=a;if(c>max)max=c;

printf("\nmax=%-d",max);}main(){inta,b,c,max;

printf("inputa,b,c:");

scanf("%d,%d,%d",&a,&b,&c);max=a;if(a<b)max=b;

if(c>max)max=c;

printf("\nmax=%-d",max);}选择结构if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…。。。。

if(表达式n)语句nelse语句n+1形式3:这种格式也称之为嵌套的if~else~语句,其执行流程如下:完善一元二次方程的求根程序,考虑系数a=0;等根和复数根情况。先看一下流程图:例:程序c506:#include<math.h>main(){floata,b,c,p,q,t,x1,x2;

printf("inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a==0.)printf("a==0!!!return.");else{p=-b/(2.*a);t=b*b-4*a*c;q=sqrt(fabs(t))/(2.*a);if(t==0.)printf("\nx1=x2=%-f",p);

elseif(t>0.)printf("\nx1=%-f,x2=%-f",p+q,p-q);elseprintf("\nx1=%-f+%fi,x2=%-f-%fi",p,q,p,q);}}例计算运费问题:

路程(s)越远,运费越低,标准如下:路程s(km)折扣(%)s<2500250<=s<5002500<=s<100051000<=s<200082000<=s<300010s>=300015

计算运费公式:总运费(f)=基本费(p)*货物重量(w)*路程(s)*(1-折扣(d))流程图程序如下:

(c507)main(){floatf,p,w,s,d;

printf("inputp,w,s:");scanf("%f,%f,%f",&p,&w,&s);if(s<250.)d=0.;elseif(s<500.)d=.02;elseif(s<1000.)d=.05; elseif(s<2000)d=.08; elseif(s<3000)d=.1; elsed=.15;f=p*w*s*(1-d);printf("\nw=%-fs=%-ff=%-f",w,s,f);}条件运算符及条件表达式条件运算符要求有三个运算量,这是一个三目运算符,其表达式的一般格式:表达式1

?表达式2

:表达式3

若表达式1计值非0,则取表达式2的值,否则取表达式3的值。例:求三个数a,b,c中的大者。(例子c508)

main(){inta=-21,b=32,c=122,max;max=a>b?a:b;max=max>c?max:c;/*max=a>b?(a>c?a:c):(b>c?b:c);*/

printf(“max=%d”,max);}开关分支(switch)语句功能:根据switch表达式的值,找出与之匹配的case常量表达式i的值,然后执行语句组i,若没有与之匹配的值,则执行语句组n+1。switch(表达式){case常量表达式1:语句组1case常量表达式2:语句组2……case常量表达式n:语句组ndefault:语句组n+1}格式:

例:将上例以Switch语句实现main(){floatf,p,w,s,d;

intk;

printf("inputp,w,s:");

scanf("%f,%f,%f",&p,&w,&s);

k=s/250;switch(k){case0:d=0.;break;case1:d=.02;break;case2:case3:d=.05;break;case4:

case5:case6:case7:d=.08;break;case8:case9:case10:case11:d=.1;break;default:d=.15;}f=p*w*s*(1-d);

printf("\nw=%-fs=%-ff=%-f",w,s,f);}程序如下(c509):程序续注意:1)常量表达式的值必须各不相同;2)case出现的次序无关;3)break语句的作用;4)多个case共用一组执行语句;5)case语句的嵌套。

intx=1,y=0;switch(x){case1:switch(y){case0:printf(“**1**\n”);

温馨提示

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

评论

0/150

提交评论