利用选择结构,当某个条件成立时做一个事情,不成立时做另一个事情
关系运算和逻辑运算
关系运算用于表达条件,从而能够给出判断
例: amount>=1000, temperature<35
逻辑运算将多个判断组合起来,形成更复杂的条件
例: !x<0 , x是非负数
s>=2000&&s<3500 , 收入在2000到3500元之间
t<=15 || t >=35 , 温度低于-15度或者高于35度
(y%4==0&&y%100!=0)|| y%400==0 , y年是闰年
闰年的条件符合下面两者之一:
1 能被4整除,但不能被100整除
2 能被400整除
== :等于(关系运算符) =:赋值运算符
!= :不等于
关系运算符的优先级高于赋值运算符,低于算数运算符,自左向右结合
< , <= , > , >= 的优先级相同且最高,其次是== ,!=
例:c>a+b 等效于 c>(a+b)
a==b<c 等效于 a==(b<c)
关系表达式: 表达式 关系运算符 表达式 (表达式可以为算数,关系,逻辑,赋值,字符表达式)
关系表达式求值结果: 真:1 假:0
Int a=3,b=5;
(a==3)>(b==5) 为真(1) 因为a==3和b==5都为真(1)
关系表达式的值是一个逻辑值,即真或假
C和C+=中都用1表示真,0表示假
实际中,非0被视为真,0被视为假
逻辑型(布尔)数据 bool 它也是一种数据类型
C++中增加了逻辑型数据
逻辑型常量bool只有两个,即false和true
逻辑型变量定义:
bool found, flag=false;
found=true; 赋值 true是bool型常量,found也是bool型
编译系统处理逻辑型数据时,false为0,true为1,可以进行算数运算
逻辑运算:
C++提供3种逻辑运算符:
&&:逻辑与 (AND)
||:逻辑或(OR)
!:逻辑非(NOT)
逻辑运算符的优先级
1 !> && > ||
2 !的优先级高于算术运算符 , &&和|| 低于关系运算符
算术运算符>关系运算符>赋值运算符
例: (a==b)||(x==y) 可以写成 a==b || x==y
(!a)||(a>b) 可以写成 !a || a >b
逻辑表达式: 表达式 逻辑运算符 表达式
逻辑表达式的值是一个逻辑量 真 或者 假
对参与逻辑运算的表达式, 0为假,非0 为真
选择结构和if语句
单分支选择结构和if语句
流程图表示程序执行的流程,菱形表示的是程序执行的条件,根据表达式的真假
Ps: 求三角形面积的公式:(海伦公式)
s=(a+b+c)/2;
area= sqrt (s*(s-a)*(s-b)*(s-c));
程序中的“自我保护”
单分支是双分支选择结构的特例,单分支:if 双分支:if else
编写程序,判断某一年是否为闰年
Result 1:
#include <iostream>
using namespace std;
int main ()
{
int a;
cout<<"请输入年份"<<endl;
cin>>a;
if(a%4==0&&a%100!=0||a%400==0)
cout<<a<<"年为闰年"<<endl;
else
cout<<a<<"年不是闰年"<<endl;
return 0;
}
Result 2:(使用逻辑运算符bool)
#include <iostream>
using namespace std;
int main ()
{
int year;
bool leap;
cout<<"please enter year:";
cin>>year;
if (year%4==0&&year%100!=0||year%400==0)
{leap=true;
cout<<year<<" is";}
else
{leap=false;
cout<<year<<" is not";}
cout<<" a leap year"<<endl;
return 0;
}
If(leap)可以替代 if(leap==true)
因为leap=true时,leap==true的值还是true;leap=false时,leap==true的值为false
Bool型只存在于C++里,在C语言中,用int替代bool
Bool leap=false(true) 等价于 int leap=0(1)
If (a=4)与 if (a==4)不一样,把a赋值为4后赋值表达式结果为4,非0,为真
自定义函数求根:
void root(float a, float b, float c)
用if语句构造多分支选择结构
If(表达式1)语句1
Else if(表达式2)语句2
Else if(表达式3)语句3
……
Else 语句n
if语句的嵌套
If(c1)
If (c2)语句1
Else 语句2
Else
If (c3)语句3
Else 语句4
If与else的配对关系:只要有else一定有if,else总是与它上面最近的,且尚未配对的if进行配对,否则在else之前的if需要用花括号括起来
多分支选择结构和switch语句
Switch(表达式E) E最好为整型
{
Case 常量c1:语句1 (E==c1)
Case 常量c2:语句2
……
Case 常量cn:语句n
Default :语句n+1 c1,c2, c3……都不成立时
}
执行完语句1后必须还需要执行语句2,……
在语句1后加上break后,直接退出,不继续执行下面的语句
Case 常量1:语句1;break;
Break的灵活运用
Switch(grade)
……
Case ‘A’:
Case ‘B’:
Case ‘C’:cout<<”及格\n”;break;
……
当grade的值为‘A’,’B’ , ‘C’时执行同一组语句