版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章选择结构程序设计学习目的:掌握关系运算符和逻辑运算符的运算规则及优先级关系
掌握条件语句的语句格式和执行顺序学会进行选择结构程序设计重点难点:条件语句的嵌套选择结构程序的分析方法和设计方法
4.1关系运算符和关系表达式关系运算符
<<=>>=(优先级相同)高
==!=(优先级相同)低
算术运算符(高)关系运算符赋值运算符(低)例:
c>a+bc>b==aa==b<ca=b>c关系表达式概念:由关系运算符将两个表达式连接起来的式子如:d+a>b+c(a>b)>(c>d)
关系表达式的值真以1代表
假以0代表例:当a=3,b=2,c=1求f=a>b>c的值当a=5,b=4,c=2求a>b!=c的值4.2逻辑运算符和逻辑表达式逻辑运算符
&&(逻辑与)||(逻辑或)!(逻辑非)逻辑运算符的运算规则优先级:!&&||(高)
>(低)
!(高)算术运算符关系运算符
&&和||赋值运算符(低)例(a>b)&&(x>y)(a==b)&&(x<y)!a||(a>b)逻辑表达式逻辑运算结果逻辑值:真(1)假(0)运算量的判断:假(0)真(非0)例:a=6,b=4,c=2,
求表达式!(a-b)+c-1&&b+c/2的值
4.3if语句if语句的三种形式形式一格式:
if(expression)statement
执行过程:exprstatement非0=0例:if(x>y)
printf(“%d”,x);形式二
格式:if(expression)statement1elsestatement2执行过程::exprstatement1statement2非0=0例:if(x>y)max=x;elsemax=y;形式三:格式:执行过程:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...elseif(exprm)statementm
elsestatementnexpr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;说明:if后面的表达式类型任意语句可以是复合语句
if(x)if(x!=0)if(!x)if(x==0)如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);例考虑下面程序的输出结果:#include<stdio.h>main(){intx,y;
scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;
printf(“%d,%d\n”,x,y);}CompileError!例:求一个数的绝对值#include<stdio.h>main(){intx,y;
printf("Enteraninteger:");
scanf("%d",&x);y=x;
if(y<0)y=-y;
printf("\ninteger:%d--->absolutevalue:%d\n",x,y);}运行:Enteraninteger:-12integer:-12--->absolutevalue:12
比较两个数,求其中的大者
main(){inta,b;
printf("Enterintegera:");
scanf("%d",&a);
printf("Enterintegerb:");
scanf("%d",&b);
if(a>b)
printf(“themaxnumberis:%d”,a);else
printf(“themaxnumberis:%d”,b);}求y=x(x+2)2<x<=102x-1<x<=2x-1x<=-1main(){intx,y;scanf(“%d”,&x);If(x>2&&x<=10)y=x*(x+2);elseif(x>-1&&x<=2)y=2*x;elseif(x<=-1)y=x-1;elsey=-1;If(y!=-1)printf(“%d”,y);elseprintf(“error”);}4.4If语句的嵌套if(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1)if(expr2)statement1elsestatement3
内嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4内嵌ifif(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4内嵌if内嵌if注:if~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...结果:-1main(){inta=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;
printf(“%d”,c);}对函数y=-1(x<0)0(x=0)1(x>0)编程序,输入x的值,输出y的值程序1:程序2: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);}main(){intx,y;
scanf(“%d”,&x);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf(“x=%d,y=%d\n”,x,y);}程序3:程序4: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);}main(){intx,y;
scanf(“%d”,&x);y=0;if(x>=0)if(x>0)y=1;elsey=-1;
printf(“x=%d,y=%d\n”,x,y);}读程序写结果main(){inta=1,b=3,c=5,d=4;if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;printf(“x=%d”,x);}结果:x=24.5switch语句(开关分支语句)一般形式:
switch(表达式){caseE1:语句组1;break;caseE2:语句组2;break;…….caseEn:语句组n;break;[default:语句组n+1;]}switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcase说明:E1,E2,…En是常量表达式,且值必须互不相同语句标号作用,必须用break跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句如:……case‘A’:case‘B’:case‘C’:
printf(“score>60\n”);break;……..例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}运行结果:score为5时,输出:
Verygood!Good!Pass!Fail!dataerror!例
main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}
printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1例根据输入字母输出字符串#include<stdio.h>main(){intc;
printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}4.6条件运算符一般格式表达式1?表达式2:表达式3
说明:执行顺序优先级结合方向表达式的类型例:设intx=1,y=0;x-->(y+x)?10:12.5>y++?‘A’:‘Z’例:intx=0,y=1;x++*x--!=‘y’?8-4:y
4.7程序举例:例1写一个程序,判断某一年是否闰年Year被4整除Year被100整除Year被400整除YLeap=1NLeap=0YNLeap=1YNleap=0YN输出闰年输出非闰年leapmain(){intyear,leap;
scanf(“%d”,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}elseleap=1;}elseleap=0;if(leap)
printf(“%dis”,year);else
printf(“%disnot“,year);printf(“aleapyear.\n”);}程序:例2:求ax2+bx+c=0方程式的根main(){floata,b,c,disc,x1,x2,real,imag;else
scanf(“%f,%f,%f”,&a,&b,&c);{real=-b/(2*a);
printf(“theequation”);imag=sqrt(-disc)/(2*a);
if(fabs(a)<=1e-6)printf(“hascomplexroot:\n);
printf(“isnotaquadratic\n”);printf(%8.4f+%8.4fi\n,real,imag);
elseprintf(%8.4f-%8.4fi\n”,real,imag);disc=b*b-4*a*c;}}
if(fabs(disc)<=1e-6)
printf(“hastwoequalroots:%8.4f\n”,-b/(2*a));elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);
pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024新教材高中历史 第五单元 晚清时期的内忧外患与救亡图存 第17课 列强侵略的加剧教学设计(一)部编版必修中外历史纲要上
- 七年级生物上册 第五章 物种的多样性教案 (新版)冀教版
- 信息技术 我的电脑我作主“使用我的电脑”教学设计 江苏省宜兴市实验中学 蒋风雷
- 安徽省长丰县高中英语 Unit 18 Beauty Lesson 2 Whats your favourite music教案 北师大版选修6
- 八年级物理上册 6.1质量备课教案 (新版)新人教版
- 七年级地理下册 第七章 第一节 我国四大地理区域的划分教案2 中图版
- 高中化学 第三册 第九章 初识元素周期律 9.2 元素周期表教学设计2 沪科版
- 400电话合同模板
- 三人合伙经营公司合同模板
- 食堂进货采购合同模板
- 2024年保密基本知识题库附答案(完整版)
- 医疗器械入库和出库管理制度
- 股动脉穿刺术后护理
- 新生儿呼吸机使用及护理
- 社区矫正专业人员的培训
- 风控平台题准入考试-信息题库(500道)
- Unit 9 My favorite subject is science 第3课时 教学设计人教英语七年级上册
- 中华民族共同体概论课件专家版6第六讲 五胡入华与中华民族大交融(魏晋南北朝)
- 北京市中小学生天文观测竞赛附有答案
- JGJ79-2012 建筑地基处理技术规范
- 依托咪酯 它究竟为何物-禁毒宣传主题班会课件
评论
0/150
提交评论