逻辑运算和选择结构程序相关设计_第1页
逻辑运算和选择结构程序相关设计_第2页
逻辑运算和选择结构程序相关设计_第3页
逻辑运算和选择结构程序相关设计_第4页
逻辑运算和选择结构程序相关设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

逻辑运算和选择结构程序相关设计本次课程主要内容关系运算符和关系表达式逻辑运算符和逻辑表达式条件运算符和条件运算if语句switch语句和break语句关系运算关系运算:对两个运算量进行大小关系比较的运算,运算结果为1(逻辑真)或0(逻辑假)。关系运算符(按从高到低顺序):

<、<=、>、>=、

==、!=关系表达式,用关系运算符连接起来的两个表达式: 表达式关系运算符表达式优先级:低于算术运算符,高于赋值运算符举例:

x>y!=z 等价:(x>y)!=z x==y<z 等价:x==(y<z) x>y>z 等价:(x>y)>z z>x+y 等价:z>(x+y) x=y>z 等价:x=(y>z)逻辑运算符和逻辑表达式逻辑运算符:&&(逻辑与,也叫逻辑乘)||(逻辑或,也叫逻辑加)!(逻辑非)逻辑表达式:结果只有两种:非0:逻辑真0:逻辑假逻辑与的真值表逻辑与运算:两个运算量都为非0,结果才为1(逻辑真)。逻辑或的真值表逻辑与运算:两个运算量中只要有一个运算量非0,结果就为1(逻辑真)。逻辑非的真值表逻辑非运算:使运算量的值变反,即非0值变0值。X!X非0001逻辑表达式运算的优先级优先级(从高到低): !算术运算符关系运算符

&&||赋值运算符练习:6<5+3&&4||2>=!0811111注意C程序中某些关系表达式的写法:a<x<ba>x>bx>a&&x<bx>b&&x<aC程序中一定不要有连续“…<…<…”或“…>…>…”的形式!条件运算符和条件表达式条件运算符:?:表达式的一般形式:表达式1?表达式2:表达式3如:max=(a>b)?a:b条件表达式流程图说明:条件运算符仅优先于赋值运算符。条件运算符的结合方向为“自右到左”。【程序5.1】输入一个字符,判别它是否大写字母。如果是,将它转换成小写字母;如果不是,不转换。main(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c\n",ch);}if语句if语句的三种形式:实现单分支选择结构的形式实现双分支选择结构的形式实现多分支选择的形式if语句之单分支选择结构一般形式:

if(表达式)语句说明:当表达式的结果为非0时,执行后面的语句,否则不执行。单分支选择结构流程图【5.2】将输入的三个数按照从小到大的顺序输出main(){floata,b,c,t;scanf("%f%f%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}/*a、b间的较小值存入a*/if(a>c){t=a;a=c;c=t;}/*a、c

间的较小值存入a*/if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}if语句之双分支选择结构一般形式:

if(表达式)语句1 else语句2说明: 当表达式的值为非0时,执行语句1,否则执行语句2。表达式语句1语句20=0双分支选择结构流程图【5.3】显示输出从终端输入的两个整数中绝对值较大的main(){intx1,y1,x2,y2;scanf("%d,%d",&x1,&y1);if(x1<0)x2=-x1;elsex2=x1;if(y1<0)y2=-y1;elsey2=y1;printf("%d\n",(x2>y2?x1:y1));}

条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。运行情况:-23,3434if语句之多分支选择结构一般形式:

if(表达式)语句1 elseif(表达式)语句2 elseif(表达式)语句3

…… elseif(表达式)语句n else语句n+1说明:各个表达式按顺序求值,如果某个表达式的值为非0,则执行与其相关的那条语句,并由此结束整个if语句。多分支选择结构流程图if语句的嵌套格式一:if() if()语句1 else语句2else if()语句3 else语句4格式二:if()

{if()语句1}else if()语句2 else语句3含义:在if语句中又包含一个或多个if语句称为if语句的嵌套。注意if与else的配对关系。【程序5.4】判断输入的字符是数字、大写字母、小写字母或其他字符。#include<stdio.h>main(){charc;printf("Enteracharacter:");c=getchar();if(c>='0'&&c<='9')printf("Digit!\n");elseif(c>='A'&&c<='Z')printf("Uppercase!\n");elseif(c>='a'&&c<='z')printf("Lowercase!\n");elseprintf("Othercharater!\n");}【程序5.5】解一元二次方程ax2+bx+c=0。一元二次方程的解的情况有下列几种可能:a=0,不是二次方程;b2-4ac=0,有两个相等实根:b2-4ac>0,有两个不等实根:

b2-4ac<0,有两个共轭实根。分析一元二次方程N-S图#include<math.h>main(){floata,b,c,d,x1,x2,p,q;scanf("%f,%f,%f",&a,&b,&c);printf("Theequation");if(fabs(a)<=1e-6)printf("isnotquadratic.\n");elsed=b*b-4*a*c;if(fabs(d)<=1e-6) printf("hastwoequalroots:%8.4f\n",-b/(2*a));源程序:未完,待续……elseif(d>1e-6) { x1=(-b+sqrt(d)/(2*a)); x2=(-b-sqrt(d)/(2*a)); printf("hasdistinctrealroots:%8.4fand%8.4f\n",x1,x2); }else { p=-b/(2*a); q=sqrt(-d)/(2*a); printf("hascomplexroots:\n"); printf("%8.4f+%8.4fi\n",p,q); printf("%8.4f-%8.4fi\n",p,q); }}switch语句和break语句switch语句:是专门用于实现多分支选择的语句。break语句:终止switch语句的执行。switch语句的一般形式:

switch(表达式) { case常量表达式1:语句1 case常量表达式2:语句2

……

case常量表达式n:语句n default:语句n+1 }Switch(t_type){case‘A’:printf(“RMB60.00”);break;/*大客车*/case‘B’:printf(“RMB50.00”);break;/*大货车*/case‘C’:printf(“RMB40.00”);break;/*面包车*/case‘D’:printf(“RMB20.00”);break;/*小轿车*/default:printf(“RMB10.00”);/*其他车辆*/}例:公路收费站的车辆收费问题。说明:变量“t_type”用来表示汽车的类型。【程序5.6】根据考试成绩的等级打印出百分制分数段:#include<stdio.h>main(){chargrade;grade=getchar();switch(grade){ case'a':printf("85~100\n"

温馨提示

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

评论

0/150

提交评论