第3章 选择结构(C++版)
合集下载
C语言程序设计第3章选择结构程序设计
![C语言程序设计第3章选择结构程序设计](https://img.taocdn.com/s3/m/cb920d2e89eb172dec63b7a7.png)
√
!注意 if 与 else 的配对关
系,else总是与它上面最近 的未配对的 if 配对,若if与 else 的数目不一致,可以加 { }来确定配对关系。
整理课件
例:有一函数
y=
-1 0
(x<0) 输入X值,输出Y值。 (x=0)
1 (x>0)
main( ) { int x, y; scanf("%d",&x);
if (x<0) y= -1; else if (x= =0) y=0;
if(x<=0)
else y=1;
if (x= =0) y=0; y= -1;
else y=-1;
if (x>=0)
eplrsientfy(="1x;=%d,y=%d\n{"i,xf ,(yx)>;0) y=1; }
}
else y=0;
整理课件
程序设计基本步骤
定义变量 产生数据 数据处理、计算 输出结果
整理课件
√
程序举例
编程1:判断某一年是否闰年。 能被4整除但不能被100整除的是闰年; 能被400整除的是闰年。
main( ) { int y; scanf("%d",&y);
if ((y%4==0&&y%100!=0)||(y%400==0)) printf("yes\n",y);
}
15 x 30 30 x 100 100 x 200 其它
整理课件
读程序段
m,n,x,y,z均为整型变量,求执行完该段 程序后各变量的值。
m=10;n=5;
x=(--m==n++)?--m:++n;
C语言高教版第3版第三章三种基本控制结构上课件
![C语言高教版第3版第三章三种基本控制结构上课件](https://img.taocdn.com/s3/m/3b148f2abd64783e09122bbc.png)
„a‟<‘b‟ <‘c‟
关系表达式的值是一个逻辑值,即 【例2.18】判断以下关系表达式的值。 • “真”或“假”。 当 a = 3, b = 2, c = 1,请判断表达式的值 C语言没有逻辑型数据,以1代表“真”, 1. a > b 以“0”代表“假”。 1
2. (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)
结果m=0,n=1
【例】逻辑表达式的短路特性。例
复杂逻辑条件的表述
• 判断某一年year是否为闰年 1. 闰年 (year%4==0 && year%100!=0)||(year%400==0)
! 优先级:第2级 结合方向:自右向左
&&
||
优先级:第11级 结合方向:自左向右
优先级:第12级 结合方向:自左向右 /* 等价于(a<=x) && (x<=b)*/ /* 等价于(a>b)&&(x>y) */ /* 等价于 (a==b)||(x==y) */ /* 等价于(!a)||(a>b) */
有一个或多个输出
二、算法的描述工具
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)
高中信息学奥赛C++ 第3章 选择结构(C++版)
![高中信息学奥赛C++ 第3章 选择结构(C++版)](https://img.taocdn.com/s3/m/63276e10af45b307e8719785.png)
//maxn 为a,b中的最大值 //maxn 为a,b,c中的最大值
三、目运算符 c++有一个常用来代替if else 语句的操作符,这个操作符 被称为三目运算符(?:),它是c++中唯一一个需要3个操作数的 操作符。该操作符的通用格式如下: b?a:c 如果 b为 true ,则整个表达式的值为 a;否则,整个表达 式的值为c。下面两个语句演示了该操作符是如何工作的: x=5>3?10:12 // 5>3为true,所以 x=10; x=3==9?25:18 // 3==9为false,所以 x=18;
#include<iostream> using namespace std; int main() { int t; cin >> t; if ((t>=25) &&(t<=30)) cout<<"ok!\n"; else cout<<"no!\n"; return 0; }
格式2 : if (条件表达式) { 语句1; 语句2; …… } else { 语句1; 语句2; …… } 若分支语句由多个句子构成,我们必须把这些句子括在一 对花括号{ }内。
条件表达式
false
true 语句1
图3-1
程序设计风格提示:从语法上来讲,整个if语句可以写 在一行。如果条件表达式和语句都非常简单,那么整个语句 可以写在一行;否则,最好在条件表达式后换行,而且语句 部分要相对if缩进两格。
例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes #include<iostream> using namespace std; int main( ) { int a; cin>>a; if (a%2==0) cout<<"yes"; return 0; } 注意:关系运算符==用来表达该符号的左右两边是 否相等,不要写成赋值号=。 试一试
C语言程序设计ppt课件-第3章-选择结构
![C语言程序设计ppt课件-第3章-选择结构](https://img.taocdn.com/s3/m/480e52b09a89680203d8ce2f0066f5335a8167bf.png)
1.表达式 2. if语句 3. switch语句 4. 选择结构的嵌套 5. 选择结构的应用
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。
选择结构(C++版)
![选择结构(C++版)](https://img.taocdn.com/s3/m/ab4e1084dd88d0d233d46ab0.png)
条件表达式
false
true 语句1
图3-1
程序设计风格提示:从语法上来讲,整个if语句可以写 在一行。如果条件表达式和语句都非常简单,那么整个语句 可以写在一行;否则,最好在条件表达式后换行,而且语句 部分要相对if缩进两格。
例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes #include<iostream> using namespace std; int main( ) { int a; cin>>a; if (a%2==0) cout<<"yes"; return 0; } 注意:关系运算符==用来表达该符号的左右两边是 否相等,不要写成赋值号=。 试一试
例3.5 输入温度t的值,判断是否适合晨练。(25<=t<=30, 则适合晨练ok,否则不适合no)
#include<iostream> using namespace std; int main() { int t; cin >> t; if ((t>=25) &&(t<=30)) cout<<"ok!\n"; else cout<<"no!\n"; return 0; }
若题目改为“读入一个整数a,如果a为入一个数,若这个数大于1并且小于100,则输出yes
# include<iostream> using namespace std; int main ( ) { int a; cin>>a; if ((a>1)&&(a<100)) cout<<"yes"; return 0; } 注意:此程序中的条件表达式为(a>1)&&(a<100),根据要 求 “条件表达式”必须用圆括号括起来,否则编译会出错。
false
true 语句1
图3-1
程序设计风格提示:从语法上来讲,整个if语句可以写 在一行。如果条件表达式和语句都非常简单,那么整个语句 可以写在一行;否则,最好在条件表达式后换行,而且语句 部分要相对if缩进两格。
例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes #include<iostream> using namespace std; int main( ) { int a; cin>>a; if (a%2==0) cout<<"yes"; return 0; } 注意:关系运算符==用来表达该符号的左右两边是 否相等,不要写成赋值号=。 试一试
例3.5 输入温度t的值,判断是否适合晨练。(25<=t<=30, 则适合晨练ok,否则不适合no)
#include<iostream> using namespace std; int main() { int t; cin >> t; if ((t>=25) &&(t<=30)) cout<<"ok!\n"; else cout<<"no!\n"; return 0; }
若题目改为“读入一个整数a,如果a为入一个数,若这个数大于1并且小于100,则输出yes
# include<iostream> using namespace std; int main ( ) { int a; cin>>a; if ((a>1)&&(a<100)) cout<<"yes"; return 0; } 注意:此程序中的条件表达式为(a>1)&&(a<100),根据要 求 “条件表达式”必须用圆括号括起来,否则编译会出错。
C语言程序设计第3章 选择结构流程和应用
![C语言程序设计第3章 选择结构流程和应用](https://img.taocdn.com/s3/m/94c5fc010722192e4536f6fc.png)
2 单分支和双分支选择结构程序设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。
本章内容中我们将学习 1 选择结构判定条件的构成 2 单分支与双分支选择结构程序设计 3 多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符,其 运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符,如 表3-1所示。
条件
Y
N
语句
试一试
问题3.4 从键盘输入一个数,输出其绝对值。 解题步骤 1.定义变量二个int变量iX,iY,其中iX用来接收 用户从键盘输入的数据,iY用来存放iX的绝对值。 2.从键盘输入一个整数放iX; 3.把iX放iY; 4.正数的绝对值是正数本身,负数的绝对值是其 相反数。所以,如果iX<0,则iY= -iX,否则不 需要做什么; 5.输出iX和iY。
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印一 张饮酒卷,使的能饮酒的同学可以获取饮 酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
C#第3章
![C#第3章](https://img.taocdn.com/s3/m/b81b2f01bb68a98271fefaf6.png)
单入口双分支 单入口三分支(如上面的if语句实现的选择结构) 单入口多分支(三个或三个以上的分支)
对于这些选择结构,除了可以利用if语句来实现以 外,还可以用switch语句来完成。
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
为表述方便,我们将if语句分为三种类型:
if…语句
C#程序设计教程——蒙祖强编著
Console.Write("请输入出行月份(1-12):"); 游客在其他月份出行,怎样出现提示信息? int mon = int.Parse(Console.ReadLine()); if (mon >= 5 && mon <= 10) { Console.WriteLine("旺季出行,机票不打折"); } else { Console.WriteLine("淡季出行,机票打折"); } Console.ReadLine();
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
【例3.3】 编写一个窗体应用程序,使之能够对给 定的实数进行四舍五入。 创建C#窗体应用程序Rounding,界面如下图:
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
——分段函数的实现
C#程序设计教程——蒙祖强编著
【例3.1】 构造一个C#控制台应用程序,使之实 现下列分段函数的功能:
3.1一个简单的选择结构程序
——分段函数的实现
C#程序设计教程——蒙祖强编著
3.1.1 创建C#控制台应用程序 创建一个控制台应用程序PiecewiseFunction:
对于这些选择结构,除了可以利用if语句来实现以 外,还可以用switch语句来完成。
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
为表述方便,我们将if语句分为三种类型:
if…语句
C#程序设计教程——蒙祖强编著
Console.Write("请输入出行月份(1-12):"); 游客在其他月份出行,怎样出现提示信息? int mon = int.Parse(Console.ReadLine()); if (mon >= 5 && mon <= 10) { Console.WriteLine("旺季出行,机票不打折"); } else { Console.WriteLine("淡季出行,机票打折"); } Console.ReadLine();
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
【例3.3】 编写一个窗体应用程序,使之能够对给 定的实数进行四舍五入。 创建C#窗体应用程序Rounding,界面如下图:
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
——分段函数的实现
C#程序设计教程——蒙祖强编著
【例3.1】 构造一个C#控制台应用程序,使之实 现下列分段函数的功能:
3.1一个简单的选择结构程序
——分段函数的实现
C#程序设计教程——蒙祖强编著
3.1.1 创建C#控制台应用程序 创建一个控制台应用程序PiecewiseFunction:
第3章 选择&循环结构程序设计
![第3章 选择&循环结构程序设计](https://img.taocdn.com/s3/m/61d120680b1c59eef9c7b40d.png)
switch语句的语义
switch语句的语义如下:
计算整型表达式; 将整型表达式的值顺序地与各个case后的整常量 相比较,若与某个整常量相等,则从对应的case 之后的语句组开始往下执行,若与所有整常量均 不等,在有default的情况下,只执行语句组n。
以上语义中隐含着:
每个分支中可以有多个语句,而且不必复合。 一旦找到匹配 (或defaulte),就会一直往下执行 而非执行单个分支。若想在执行单个分支后退出, 则必须让每个语句组的最后一条语句是 break;。
与人类擅长解析和符号运算等特点不同, 计算机必须从具体数据出发,按照人为其 设计好的程序机械地进行运算。另一方面, 由于计算机的运算速度很快,因此最擅长 完成那些计算工作量很大的重复性运算。 这种重复是指运算步骤,数据则在重复中 不断地改变,每当执行这组步骤时,程序 都从变量的原值推出它的一个新值,这一 过程称为“迭代” ,是计算机得以发展的 关键因素。循环则是实现迭代的必要条件。
3.3.2 while语句
while语句的语法 while语句的语义 while语句程序实例
while语句的语法
while语句的语法是:
while (表达式) 语句
其中:
“while (表达式)”为循环控制,其中“表达式” 可以为任意类型,但其值将当作逻辑值使用。 “语句 ”为循环体,它可以是一个语句、一个由 花括弧括起来的复合语句或另一个控制结构。
如果表达式的初值为false,则一次循环也不执行 表达式的值必须在循环体中改变,否则为死循环
while语句程序实例
// 从键盘输入一组整数(以0作为输入结束的标志),打印其最大值 #include <stdio.h> int main() { int x, max; printf("输入一个整数:"); scanf("%d", &x); max = x; while (x != 0) { printf("输入一个整数:"); scanf("%d", &x); if (x > max) max = x; } printf("最大值 max = %d\n", max); return 0;
03-选择结构程序设计
![03-选择结构程序设计](https://img.taocdn.com/s3/m/822313d026fff705cc170a07.png)
军事交通学院
计算机教研室
C语言笔试—3-27
switch 语句
考点1:switch 语句
switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式3: 语句3; break; default: 语句4; } 计算机教研室
<
>
小于
大于
<= 小于等于
>= 大于等于
军事交通学院
计算机教研室
C语言笔试—3-7
选择结构基本概念
考点1:关系运算和逻辑运算 3、关系运算 例1:若 a=5, b=3, c=1,则: a>b>c 的值为______。 例2:若 a=5, b=3, c=1, d=0, 则: d=b>c!=a 的值为______。
B)和之前与其最近的 if 配对; C)和之前与其最近的且不带 else 的 if 配对; D)和之前的第一个 if 配对。
军事交通学院
计算机教研室
C语言笔试—3-23
if 语句与条件表达式
例9:[2008年9月]有以下程序 #include <stdio.h> main( ) { int x=1, y=2, z=3; if(x>y) if(y<z) printf("%d", ++z); else printf("%d", ++y); printf(“%d\n”, x++); } 程序的运行结果是( )。 A)331 B)41 C)2
结束
军事交通学院
结束
计算机教研室
C语言笔试—3-5
计算机教研室
C语言笔试—3-27
switch 语句
考点1:switch 语句
switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式3: 语句3; break; default: 语句4; } 计算机教研室
<
>
小于
大于
<= 小于等于
>= 大于等于
军事交通学院
计算机教研室
C语言笔试—3-7
选择结构基本概念
考点1:关系运算和逻辑运算 3、关系运算 例1:若 a=5, b=3, c=1,则: a>b>c 的值为______。 例2:若 a=5, b=3, c=1, d=0, 则: d=b>c!=a 的值为______。
B)和之前与其最近的 if 配对; C)和之前与其最近的且不带 else 的 if 配对; D)和之前的第一个 if 配对。
军事交通学院
计算机教研室
C语言笔试—3-23
if 语句与条件表达式
例9:[2008年9月]有以下程序 #include <stdio.h> main( ) { int x=1, y=2, z=3; if(x>y) if(y<z) printf("%d", ++z); else printf("%d", ++y); printf(“%d\n”, x++); } 程序的运行结果是( )。 A)331 B)41 C)2
结束
军事交通学院
结束
计算机教研室
C语言笔试—3-5
第3章--选择结构--参考答案
![第3章--选择结构--参考答案](https://img.taocdn.com/s3/m/cbae0c94e53a580216fcfecc.png)
#include <stdio.h>
main( )
{
int k;
scanf("%d",&k);
switch (k)
{
case 1: printf("%d\n",k++);
case 2: printf("%d\n",k++);
case 3: printf("%d\n",k++);
case 4: printf("%d\n",k++); break;
default: printf("Full!\n");
}
}
A) 1 B) 2
C) 2 D) 1
3 2
4 3
5 4
D
29.执行下面程序时,若从键盘输入"2<CR>",则程序的
运行结果是( )。
#include <stdio.h>
main( )
{ int j,k; char cp;
cp=getchar( );
顺序分支结构选择题:
1.设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
上面表达式的值是
A) A B) a
C) Z D) z
B
2.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,
值为0的表达式是
A) 'a'&&'b' B) a<=b
main( )
{
int k;
scanf("%d",&k);
switch (k)
{
case 1: printf("%d\n",k++);
case 2: printf("%d\n",k++);
case 3: printf("%d\n",k++);
case 4: printf("%d\n",k++); break;
default: printf("Full!\n");
}
}
A) 1 B) 2
C) 2 D) 1
3 2
4 3
5 4
D
29.执行下面程序时,若从键盘输入"2<CR>",则程序的
运行结果是( )。
#include <stdio.h>
main( )
{ int j,k; char cp;
cp=getchar( );
顺序分支结构选择题:
1.设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
上面表达式的值是
A) A B) a
C) Z D) z
B
2.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,
值为0的表达式是
A) 'a'&&'b' B) a<=b
C语言-3-简单选择结构
![C语言-3-简单选择结构](https://img.taocdn.com/s3/m/1bd5df3f647d27284b735173.png)
第三讲 简 单 选 择 结 构
3.2.1 关系运算
1、逻辑值与整数的关系
逻辑值: “真”、“假”,或 T 、F 表示方式: 0 为“假”,非0为“真” 系统真值: 1
2. 整数对应的逻辑值 在C语言中,整数也可以直 接作为逻辑值使用,非零整 100<200<10 数相当于逻辑值“真”,0相 分析:100<200<10相当于 当于逻辑值“假”。如下面 (100<200)<10,100<200的结果 是真,即1,因此上式成为1<10。 直接将整数10作为条件,相 结果整个表达式的值为“真”。 当于“真”,因此执行后x的 值为5。 if(10)x=5;
10 x 30 50
x 90
(2) x<60 || x>180 (或 !(x>=60 && x<=80)) (3) (x>=10 && x<=30) || (x>=50 && x<=90)
4、逻辑表达式示例
1)闰年表示:一个年份如能够被400整除则是闰年;或者 该年份能被4整除但不能被100整除,则该年份也是闰年。
(year%400==0)||((year%4==0)
&&(year%100!=0))
2)输入的字符不为‘Q’
(c=getchar( ))!=‘Q’
5、举例
例3.2 判断下列逻辑表达式是否成立: 1<3 && 5<8 (成立) 3<2 && 4>3 (不成立) 3<2 || 4>3 (成立) 6>5 || 1<2 (成立) !(4<=6) (不成立) 例3.3 写出下列判断的逻辑表达式 (1)m被3整除 (2)成绩grade在70到80之间(包含70,不包含80) (3)x 和 y 不同时为0 (4)a是奇数或者b是偶数
3.2.1 关系运算
1、逻辑值与整数的关系
逻辑值: “真”、“假”,或 T 、F 表示方式: 0 为“假”,非0为“真” 系统真值: 1
2. 整数对应的逻辑值 在C语言中,整数也可以直 接作为逻辑值使用,非零整 100<200<10 数相当于逻辑值“真”,0相 分析:100<200<10相当于 当于逻辑值“假”。如下面 (100<200)<10,100<200的结果 是真,即1,因此上式成为1<10。 直接将整数10作为条件,相 结果整个表达式的值为“真”。 当于“真”,因此执行后x的 值为5。 if(10)x=5;
10 x 30 50
x 90
(2) x<60 || x>180 (或 !(x>=60 && x<=80)) (3) (x>=10 && x<=30) || (x>=50 && x<=90)
4、逻辑表达式示例
1)闰年表示:一个年份如能够被400整除则是闰年;或者 该年份能被4整除但不能被100整除,则该年份也是闰年。
(year%400==0)||((year%4==0)
&&(year%100!=0))
2)输入的字符不为‘Q’
(c=getchar( ))!=‘Q’
5、举例
例3.2 判断下列逻辑表达式是否成立: 1<3 && 5<8 (成立) 3<2 && 4>3 (不成立) 3<2 || 4>3 (成立) 6>5 || 1<2 (成立) !(4<=6) (不成立) 例3.3 写出下列判断的逻辑表达式 (1)m被3整除 (2)成绩grade在70到80之间(包含70,不包含80) (3)x 和 y 不同时为0 (4)a是奇数或者b是偶数
第3章 基本的程序流程控制结构
![第3章 基本的程序流程控制结构](https://img.taocdn.com/s3/m/7ee5102fa5e9856a561260e7.png)
3.3.5 选择结构程序举例
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
3.3.1 条件判断
在顺序结构中,各语句是按排列的先后次序顺序执行的, 是无条件的,不必事先作任何平判断。但在实际中,常常 有这样的情况:要根据某个条件是否成立决定是否执行指 定的任务。例如: 如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 周末我们去郊游; (需要判断是否是周末) 如果x>y,输出x,否则输入y。 (需要判断x是否大于y) 判断的结果应该是一个逻辑值:“是”或“否”,在计算 机语言中用“真”和“假”表示。例如,当x>y时,满足 “x>y”条件,就称条件“x>y”为真,如果x≤y,不满足 “x>y”条件,就称条件“x>y”为假。
}
计算机程序设计基础(C语言)
例3.3 求4个数中的最大值。
算法分析:程序的功能是输入4个数给a,b, c,d。把a先赋予变量max,再用语句判别 max和b的大小,如max小于b,则把b赋予 max。同理,max继续跟c和d比较即可使 得max中总是大数,最后输出max的值就 是4个数中的最大值。
计算机程序设计基础(C语言)
在判定两个浮点数是否相等时,由于计算机存储上 出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0==1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0得 到的值的有效位数是有限的,并不等于,因此上 面关系表达式的值为0(假),而不为1(真)。 所以应避免对两个实数表达式作“相等”或“不 相等”的判定。上式可以改写为: fabs(1.0/3.0*3.0-1.0)<1e-5
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
3.3.1 条件判断
在顺序结构中,各语句是按排列的先后次序顺序执行的, 是无条件的,不必事先作任何平判断。但在实际中,常常 有这样的情况:要根据某个条件是否成立决定是否执行指 定的任务。例如: 如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 周末我们去郊游; (需要判断是否是周末) 如果x>y,输出x,否则输入y。 (需要判断x是否大于y) 判断的结果应该是一个逻辑值:“是”或“否”,在计算 机语言中用“真”和“假”表示。例如,当x>y时,满足 “x>y”条件,就称条件“x>y”为真,如果x≤y,不满足 “x>y”条件,就称条件“x>y”为假。
}
计算机程序设计基础(C语言)
例3.3 求4个数中的最大值。
算法分析:程序的功能是输入4个数给a,b, c,d。把a先赋予变量max,再用语句判别 max和b的大小,如max小于b,则把b赋予 max。同理,max继续跟c和d比较即可使 得max中总是大数,最后输出max的值就 是4个数中的最大值。
计算机程序设计基础(C语言)
在判定两个浮点数是否相等时,由于计算机存储上 出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0==1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0得 到的值的有效位数是有限的,并不等于,因此上 面关系表达式的值为0(假),而不为1(真)。 所以应避免对两个实数表达式作“相等”或“不 相等”的判定。上式可以改写为: fabs(1.0/3.0*3.0-1.0)<1e-5
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
C语言程序设计 第3章 选择结构 -
![C语言程序设计 第3章 选择结构 -](https://img.taocdn.com/s3/m/f2234fc0846a561252d380eb6294dd88d0d23d7f.png)
}
如果条件满足了,就执行{}里的语句, 如果条件不满足,直接越过{}里的语句。
3.2 关系运算符与关系表达式
关系运算符
< (小于) <= (小于或等于) > (大于) >= (大于或等于) == (等于) != (不等于)
3.2 关系运算符与关系表达式
关系表达式: 用关系运算符将两个表达式连接起来的式子
case 常量表达式2:语句2; ... default:语句n+’键向上运动,‘s’键向下运动, ‘a’键向左运动,‘d’键向右运动。
char ch = getch(); // 获得按键按下的值
switch(ch){ case 'w' : row = row - 1; case 's': row = row + 1; case 'a' : col = col - 1;
a > 60 x == 1 关系表达式的值是一个逻辑值,即“真”或“假”。
3.2 关系运算符与关系表达式
C语言中, 1表示“真”,0 表示“假”
例: 5 > 3 为真,值为1。 2 == 3 为假,值为0。 (2 > 3) == (3 > 5) 为真,值为1,
3.2 关系运算符与关系表达式
例:当按下‘w’键,方块向上运动
3.3 逻辑运算符与表达式
逻辑运算符
&& (逻辑与) || (逻辑或) ! (逻辑非) 运算规则: a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。
3.3 逻辑运算符与表达式
逻辑表达式: 用逻辑运算符将关系表达式连接起来的 式子
如果条件满足了,就执行{}里的语句, 如果条件不满足,直接越过{}里的语句。
3.2 关系运算符与关系表达式
关系运算符
< (小于) <= (小于或等于) > (大于) >= (大于或等于) == (等于) != (不等于)
3.2 关系运算符与关系表达式
关系表达式: 用关系运算符将两个表达式连接起来的式子
case 常量表达式2:语句2; ... default:语句n+’键向上运动,‘s’键向下运动, ‘a’键向左运动,‘d’键向右运动。
char ch = getch(); // 获得按键按下的值
switch(ch){ case 'w' : row = row - 1; case 's': row = row + 1; case 'a' : col = col - 1;
a > 60 x == 1 关系表达式的值是一个逻辑值,即“真”或“假”。
3.2 关系运算符与关系表达式
C语言中, 1表示“真”,0 表示“假”
例: 5 > 3 为真,值为1。 2 == 3 为假,值为0。 (2 > 3) == (3 > 5) 为真,值为1,
3.2 关系运算符与关系表达式
例:当按下‘w’键,方块向上运动
3.3 逻辑运算符与表达式
逻辑运算符
&& (逻辑与) || (逻辑或) ! (逻辑非) 运算规则: a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。
3.3 逻辑运算符与表达式
逻辑表达式: 用逻辑运算符将关系表达式连接起来的 式子
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (条件表达式) 语句1; else 语句2;
true
条件表达式
flase
程序设计风格提示:书 写if-else语句时,if和else 要对齐,而分支的语句部分 要缩进两格。
语句块1
语句块2
图3-2
例3.4 根据用户输入的成绩,判断是否通过了考试。 #include<iostream > using namespace std; int main() { int c; cin >> c; if (c>=60) cout<<"pass! \n"; else cout<<"sorry!\n"; return 0; }
第二节 if选择结构
C++提供三种选择结构,即if选择结构、if-else选择结构 和switch选择结构。 一、if语句(单分支结构) 格式1:
if (条件表达式) 语句1;
功能:如果条件表达式的值为真, 即条件成立,语句1将被执行。否则, 语句1将被忽略(不被执行),程序将 按顺序从整个选择结构之后的下一条 语句继续执行。执行流程如图3-1所示 说明:格式中的“条件表达式”必 须用圆括号括起来。
if、else、switch、while、do和for等都是C++关键字。 这些关键字是该语言保留的,用于实现C++控制结构的不同 特性。关键字不能作为变量名等一些标识符。注意,将关键 字while的拼写变为“While”是个语法错误,因为C++是区分 大小写的语言。while、if和else等所有C++保留关键字只能 语句1
图3-1
程序设计风格提示:从语法上来讲,整个if语句可以写 在一行。如果条件表达式和语句都非常简单,那么整个语句 可以写在一行;否则,最好在条件表达式后换行,而且语句 部分要相对if缩进两格。
例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes #include<iostream> using namespace std; int main( ) { int a; cin>>a; if (a%2==0) cout<<"yes"; return 0; } 注意:关系运算符==用来表达该符号的左右两边是 否相等,不要写成赋值号=。 试一试
【上机练习】
5.整数大小比较【1.4编程基础之逻辑表达式与条件分支05】 输入两个整数,比较它们的大小。若x>y,输出>;若x=y,输出=;若x<y,
输出<。 输入: 一行,包含两个整数x和y,中间用单个空格隔开。0<=x<2^32, 2^31<=y<2^31。 输出: 一个字符。若x > y,输出 > ;若x = y,输出 = ;若x < y,输出 < ; 样例输入: 1000 100 样例输出: >
【上机练习】
4.奇偶ASCII值判断【1.4编程基础之逻辑表达式与条件分支04】 任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输
出NO。例如,字符A的ASCII值是65,则输出YES,若输入字符B(ASCII值是 66),则输出NO。 输入: 输入一个字符。 输出: 如果其ASCII值为奇数,则输出YES,否则,输出NO。 样例输入: A 样例输出: YES
【上机练习】
3.奇偶数判断【1.4编程基础之逻辑表达式与条件分支03】 给定一个整数,判断该数是奇数还是偶数。如果n是奇数,输出odd;如果n
是偶数,输出even。 输入: 输入仅一行,一个大于零的正整数n。 输出: 输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。 样例输入: 5 样例输出: odd
1.判断数正负【1.4编程基础之逻辑表达式与条件分支01】 给定一个整数N,判断其正负。如果N>0,输出positive;如果N=0,输出
zero;如果N<0,输出negative。 输入: 一个整数N(-10^9 <= N <= 10^9) 输出: 如果N > 0, 输出positive; 如果N = 0, 输出zero; 如果N < 0, 输出negative 样例输入: 1 样例输出: positive
【上机练习】
8.判断一个数能否同时被3和5整除【1.4编程基础之逻辑表达式与条件分支08】 判断一个数n 能否同时被3和5整除,如果能同时被3和5整除输出YES,否则
输出NO。 输入: 输入一行,包含一个整数n。( -1,000,000 < n < 1,000,000) 输出: 输出一行,如果能同时被3和5整除输出YES,否则输出NO。 样例输入: 15 样例输出: YES
【上机练习】
2.输出绝对值【1.4编程基础之逻辑表达式与条件分支02】 输入一个浮点数,输出这个浮点数的绝对值,保留到小数点后两位。 输入: 输入一个浮点数,其绝对值不超过10000。 输出: 输出这个浮点数的绝对值,保留到小数点后两位。 样例输入: -3.14 样例输出: 3.14
【上机练习】
6.判断是否为两位数【1.4编程基础之逻辑表达式与条件分支06】 判断一个正整数是否是两位数(即大于等于10且小于等于99)。若该正整数是
两位数,输出1,否则输出0。 输入: 一个正整数,不超过1000。 输出: 一行。若该正整数是两位数,输出1,否则输出0。 样例输入: 54 样例输出: 1
第三章 程序的控制结构
第一节 概述
第二节 if选择结构
第三节 switch语句
第一节 概述
程序由若干条语句组成,各语句按照顺序一条一条地执 行,这种顺序结构是简洁的。但在现实世界中,在解决问题 的过程中,不可避免地遇到需要进行选择、或需要循环工作 的情况。这时,程序执行的顺序需要发生变化,而非从前向 后逐一执行。因此,程序中除了顺序结构以外,通常还有选 择结构、循环结构以及转移机制。 C++为了支持这些控制结构,提供了丰富、灵活的控制 语句。从结构化程序设计的观点看,所有程序都可用3种控 制结构即顺序结构、选择结构、和循环结构实现。C++在默 认的情况下采取顺序结构,除非特别指明,计算机总是按语 句顺序一条一条地执行。为使程序更清晰、更易调试与修改, 并且不容易出错,结构化编程要尽量少用或不用goto等跳转 语句。
例3.3 读入a,b,若a>b则交换a,b的值 #include<iostream> using namespace std; int main ( ) { float a,b,c; cin>>a>>b; if (a>b) { c=a; a=b; b=c; } cout<<"a="<<a<<" b="<<b; return 0; }
例3.7 if (a>b) if (b>c) y=a; else y=c; else部分否定的是条件b>c,即它与第二个if语 句配对;若想让else部分与第一个if语句配对,则要 引入一个复合语句,将上述语句写成如下形式:
if (a>b) { if (b>c) y=a; } else y=c;
【上机练习】
【上机练习】
9.判断能否被3,5,7整除【1.4编程基础之逻辑表达式与条件分支09】
给定一个整数,判断它能否被3,5,7整除,并输出以下信息: 1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格); 2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或 者5 7,中间用空格分隔); 3、只能被其中一个数整除(输出这个除数); 4、不能被任何数整除,输出小写字符‘n’,不包括单引号。 输入: 输入一行,包括一个整数。 输出: 输出一行,按照描述要求给出整数被3,5,7整除的情况。 样例输入: 105 样例输出: 357
例3.5 输入温度t的值,判断是否适合晨练。(25<=t<=30, 则适合晨练ok,否则不适合no)
#include<iostream> using namespace std; int main() { int t; cin >> t; if ((t>=25) &&(t<=30)) cout<<"ok!\n"; else cout<<"no!\n"; return 0; }
二、if-else语句(双分支结构) if单分支选择结构只在条件为true时采取操作,条件为 false时则忽略这个操作。利用if-else双分支选择结构则可 以在条件为true时和条件为false时采取不同操作。 格式1: 功能:如果(条件表达式)的值为“真” ,即条件 成立,则执行语句1,执行完“语句1”后继续执行整个if- else语句的后继语句;如果(条件表达式)的值为“假” , 即条件不成立,那么跳过语句1选择执行“语句2” ,执行 完语句2后继续执行整个if-else语句的后继语句;也就是 说if-else语句总是根据(条件表达式)的结果,选择 “语句1”和“语句2”中的一个执行,执行完以后,整个if -else就算执行完了。执行流程如图4-2所示
格式2 :
if (条件表达式) { 语句1; 语句2; …… } 若条件成立时,要执行的操作由多个句子构成, 我们必须把这些句子括在一对花括号{ }内,我们称 这种形式为语句块或复合语句。 程序设计风格提示:书写语句块(也称为复合 语句)时,左右花括号要对齐,组成语句块的各语 句要相对花括号缩进一层并对齐。