![第5章-选择控制结构_第1页](http://file4.renrendoc.com/view/b181caf1ab2eb04ba14d838732c1436b/b181caf1ab2eb04ba14d838732c1436b1.gif)
![第5章-选择控制结构_第2页](http://file4.renrendoc.com/view/b181caf1ab2eb04ba14d838732c1436b/b181caf1ab2eb04ba14d838732c1436b2.gif)
![第5章-选择控制结构_第3页](http://file4.renrendoc.com/view/b181caf1ab2eb04ba14d838732c1436b/b181caf1ab2eb04ba14d838732c1436b3.gif)
![第5章-选择控制结构_第4页](http://file4.renrendoc.com/view/b181caf1ab2eb04ba14d838732c1436b/b181caf1ab2eb04ba14d838732c1436b4.gif)
![第5章-选择控制结构_第5页](http://file4.renrendoc.com/view/b181caf1ab2eb04ba14d838732c1436b/b181caf1ab2eb04ba14d838732c1436b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章选择控制结构5.1功能语句与顺序结构程序设计5.2关系表达式和逻辑表达式5.3if语句5.4条件运算符与条件表达式5.5switch语句本章主要内容C程序的结构:C语句分为5类控制语句函数调用语句表达式语句空语句复合语句5.1功能语句与顺序结构程序设计5.1.1C语句概述(一)控制语句完成一定的控制功能
1if()~else条件语句6break中止语句
2for()~循环语句7switch()多分支选择语句3while()~循环语句8
return返回语句
4do~while();循环语句9
goto转向语句
5continue结束本次循环语句(二)函数调用语句由一个函数调用加一个分号构成
getchar();例:
(三)表达式语句由一个表达式加一个分号构成
a=3;例:分号赋值表达式表达式语句+=(四)空语句只有一个分号的语句
(什么也不做)用来做流程的转向点用来作为循环语句中的循环体;
(五)复合语句用一对{}括起来的语句
{ z=x+y; t=z/100; cout<<t; }注意:复合语句中最后一个语句中最后的分号不能忽略不写。
例:一个良好的程序由三种基本结构组成
顺序结构选择结构循环结构
5.1.2顺序结构程序设计在顺序结构程序中,程序的执行是按照语句出现的先后次序顺序执行的,并且每个语句都会被执行到,如图5.1所示。
例5.1求3门课程的平均成绩和总成绩。
intmain(){intintro,math,algebra; //定义变量
intsum,ave; //定义变量
printf("请输入3门课的成绩:\n”);//显示提示信息
scanf(“%d%d%d”,&intro,&math,&algebra);
sum=intro+math+algebra; //计算总成绩
ave=sum/3; //计算平均成绩
printf("总成绩=%d\n”,sum); //输出总成绩
printf("平均成绩=%d\n“); //输出平均成绩
return0;}
5.2关系表达式和逻辑表达式
1.关系运算符及其优先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)优先级相同(高)优先级相同(低)说明:关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符2.关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式)接起来的式子,称关系表达式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)关系表达式的值是一个逻辑值,即“真”或“假”。例:关系表达式”a>b”的值为“真”,表达式的值为1。注意:数学上的0<x<10的合法的c表达式写法。
&&(逻辑与)相当于其他语言中的AND||(逻辑或)相当于其他语言中的OR!(逻辑非)相当于其他语言中的NOT例:a&&b若a,b为真,则a&&b为真。
a||b若a,b之一为真,则a||b为真。!a若a为真,则!a为假。优先次序:!(非)->&&()->||()逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符3.逻辑运算符及其优先次序4.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式逻辑表达式的值应该是一个逻辑量“真”或“假”。例:设a=4,b=5:!a的值为0a&&b的值为1a||b的值为1!a||b的值为14&&0||2的值为1任何非零的数值被认作“真”例:5>3&&8<4-!0
自左向右运算
1&&0逻辑值为08<3逻辑值为04-1值为3!0逻辑值为15>3逻辑值为1表达式值为0在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a||b||c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c
设a=1,b=2,c=3,d=4,m=1,n=1;
例:(m=a>b)&&(n=c>d)
用逻辑表达式来表示闰年的条件能被4整除,但不能被100整除。能被4整除,又能被400整除?答
(year%4==0&&year%100!=0)||year%400==0案
值为真(1)是闰年,否则为非闰年。5.3选择结构1用if语句实现选择结构
5.3.1if语句的3种形式if语句的三种基本形式(1)if(表达式)语句例:
if(x>y)cout<<x;表达式语句真(非0)假(0)(2)if(表达式)语句1else语句2例:
if(x>y)cout<<x;elsecout<<y;
条件
语句1
语句2YN(3)if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3
……elseif(表达式m)语句melse语句n例:
if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;说明:(1).3种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式。(2).if语句中有内嵌语句,每个内嵌语句必须以分号结束。(3).else语句不能作为语句单独使用,它是if语句的一部分,必须与if配对使用。(4).在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。例5.2输入两个实数,按代数值由小到大的顺序输出这两个数。#include<stdio.h>
voidmain()
{floata,b,t;
scanf(“%f%f”,&a,&b);
if(a>b)
{t=a;
a=b;
b=t;}
printf(“%f,%f”,a,b);}
yna>bt=aa=bb=tifa>b将a和b对换ifa>c将a和c对换ifb>c将b和c对换a>ba>cb>ca和b交换a和c交换c和b交换yyynn例5.3输入三个数a,b,c,要求按由小到大的顺序输出。
#include<stdio.h>
voidmain()
{
floata,b,c,t;
scanf(“%f%f%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(“%f,%f,%f”,a,b,c);}2if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。形式:if()
if()语句1 else语句2else
if()语句3 else语句4匹配规则:else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对。例:if()
if()语句1else
if()语句2else语句3例:if() {if()语句1}else if()语句2else语句3当if和else数目不同时,可以加花括号来确定配对关系。
-1
(x<0)
例5.4有一个函数y=0(x=0),编一程序,输入一个x值,输出y值。1(x>0)算法1:算法1:
输入x输入x
若x<0,则y=-1若x<0,则y=-1
若x=0,则y=0否则: 若x>0,则y=1若x=0,则y=0
输出y若x>0,则y=1
输出y
#include<stdio.h>voidmain(){intx,y;scanf(“%d”,&x);{
程序段}printf(“x=%d,y=%d“,x,y);}上例中的程序段有四个,请判断哪个是正确的?程序1:程序2:
if(x<0)if(x>=0)y=-1;if(x>0)y=1;elseelsey=0;if(x==0)y=0;elsey=-1;elsey=1;程序3:程序4:
y=-1;y=0;if(x!=0)if(x>=0)if(x>0)y=1;if(x>0)y=1;elsey=0;elsey=-1;3条件运算符和条件表达式(特殊运算符)条件表达式格式:表达式1?表达式2∶表达式3
执行过程:使用场合:若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。
例:
if(a>b)max=a;
elsemax=b;
max=(a>b)?a∶b;说明:(1).条件运算符的执行过程:(2).条件运算符优先级高于赋值运算符,低于关系运算符和算术运算符。(3).条件运算符的结合方向为“自右至左”。(4).“表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。(5).条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。
#include<stdio.h>
voidmain()
{charch;
scanf(“%c”,&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf(“%c”,ch);
}
例5.5输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
4.switch选择结构switch语句的格式:switch
(表达式){case常量表达式1:语句1
case常量表达式2:语句2
…case常量表达式n:语句n
default:语句n+1}例:要求按照考试成绩的等级输出百分制分数段,用switch语句实现:
switch(grade){case‘A’:cout<<”85~100”<<endl;
case
‘B’:cout<<”70~84”<<endl;
case
‘C’:cout<<”60~69”<<endl;
case
‘D’:cout<<”<60”<<endl;
default:cout<<“Error!”<<endl;}说明:(1)switch后面括弧内的“表达式”,可以为任何类型。(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3)每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。(4)各个case和default的出现次序不影响执行结果。例如,可以先出现“default:…”,再出现“case′D′:…”,然后是“case′A′:…”。(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。应该在执行一个case分支后,可以用一个break语句来终止switch语句的执行。(6)多个可以共用一组执行语句。例5.6运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025单位保洁服务合同范本
- 2025商业超市供货合同
- 2《宪法是根本法》(说课稿) -统编版道德与法治六年级上册
- 农村房屋翻新合同范例
- 养殖场长期租赁合同范例
- 劳务分包结算合同范本
- 2024-2025学年高中地理 第一章 环境与环境问题 1.1 人类与环境的关系说课稿 中图版选修6
- 两月工程合同范本
- 劳务合同范本刘律师
- 浦东钢结构吊装施工方案
- 六年级英语上册综合测试卷(一)附答案
- 部编小学语文(6年级下册第6单元)作业设计
- 洗衣机事业部精益降本总结及规划 -美的集团制造年会
- 2015-2022年湖南高速铁路职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析
- 2023年菏泽医学专科学校单招综合素质模拟试题及答案解析
- 铝合金门窗设计说明
- 常见食物的嘌呤含量表汇总
- 小学数学-三角形面积计算公式的推导教学设计学情分析教材分析课后反思
- 人教版数学八年级下册同步练习(含答案)
- 2023年湖南高速铁路职业技术学院高职单招(英语)试题库含答案解析
- 秦晖社会主义思想史课件
评论
0/150
提交评论