当前位置:文档之家› c++程序设计第二章

c++程序设计第二章


在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步 进行下面的运算。称为“求值优化”。 可见: 表达式 c++ 已不需要计算所以: c不变仍为 30
C++程序设计
程序实例
【例2.5】 从键盘上输入三个整数,输出其中的最大数。
分析:读入三个数,先求出两个数中较大者, 再将该大数与第三个数比较,求出最大数。
C++程序设计
练习:把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转 换为小写字母;否则,不转换。
改写为条件表达式
#include <iostream> using namespace std; int main() { char ch; cout << "ch = "; cin >> ch ; if ( ch >= 'A' && ch <= 'Z' ) ch += 32 ; cout << ch << endl ; return 0; }
C++程序设计
程序实例
#include <iostream.h> 跳出switch语句 int main () { char grade ; cout << " Input grade of score (a_d) : " << endl ; cin >> grade ; switch ( grade ) { case 'a' : cout << " 85__100 \n " ; break; case 'b' : cout << " 70__84 \n " ; break; case 'c' : cout << " 60__69 \n " ;break; case 'd' : cout << " < 60 \n " ; break; default : cout << " error \n " ; } return 0; }
在C++中这两个逻辑值与整数之间有一个对应关系,真对应1,假对应0;反 过来,0对应假,非0整数对应真。所以逻辑运算结果可以作为整数参与算术 运算、关系运算、逻辑运算及其他运算。
C++程序设计
• 关系表达式
– 由关系运算符连接的表达式。是一种简单的逻辑表达式。值为true 或false。
例如: a+b>c+d /*等同于(a+b)>(c+d),结果为0或1*/ y=a>b /*计算a>b的值0或1赋给y,y的值为0或1*/ a>b>c /*等同于(a>b)>c,先求a>b 的值, 再将结果0或1与c比较大小*/ 注意:数学式a>b>c ,应表达为a>b&&b>c
两个语句的差别只在于一个“{}”,但表达的逻辑关系却完全不同。
C++程序设计 【例2.8】 求一元二次方程 ax2+bx+c=0 的根。 其中系数a(a≠0)、b、c的值由键盘 输入。 分析:输入系数a(a≠0)、b、c后, 令delta= b2–4ac,结果有三种情况: *若delta=0, 方程有两个相同实根; *若delta>0, 方程有两个不同实根; *若delta<0,方程无实根。
C++程序设计
执行流程
表达式
=常量1
=常量2
=常量3
=常量n
=常量n+1
语句 1
语句 2
语句 3
语句 n
语句n+1
C++程序设计
几个非常重要的概念
第一、switch ( 表达式 )中,只能是整型或字符类型或枚举类型。枚举类型 (enum)内部也是由整型或字符类型实现。不能是实型(浮点型)。 如: float a = 0.123; switch(a) //错误!a不是整型或字符类型变量。 { .... }
false (0)
表达式
true (非0)
true (非0)
表达式
false (0)
语 句
语句 1
语句 2
C++程序设计
逻辑运算、逻辑表达式
• 逻辑运算:
– 用于判断分析,运算符包括关系和逻辑运算符。
• 关系运算符:
– 包括:(大于)、(大于等于)、(小于)、(小于等于); = =(等于)和!=(不等于) 。关系运算符完成两个操作数大小的 比较,结果为逻辑值true(真)或false(假)。
输入a,b,c 求delta delta等于0 [f] [f] [t] 输出无实根 输出两不等实根 输出两相等实根 delta大于0 [t]
例题2.8活动图
C++程序设计
#include <iostream> #include <math> using namespace std; int main() { float a,b,c; float delta,x1,x2; cout<<"输入三个系数a(a!=0), b, c:"<<endl; cin>>a>>b>>c; cout<<"a="<<a<<'\t'<<"b="<<b<<'\t‘<<"c="<<c<<endl; delta=b*b-4*a*c;
C++程序设计
• 逻辑运算符
运算符 名称
!
语义
逻辑非, 操作数的值为真,则结果为假;反之结果为 单目 真 逻辑与, 当两个操作数全为真时,结果为真,否则 双目 为假; 逻辑或, 两个操作数中有一个为真,则结果为真; 双目&& ||
C++程序设计
逻辑表达式求值的优化(*)
已知: 求: int a=10, b=20, c=30; a<b || c++ //结果以及a,b,c的值
C++程序设计
第二、case之后可以是直接的常量数值,如1,2,也可以是一个使用常 量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a * 2等。当然 也不能是实型数,如4.1,或2.0 / 2 等。 switch(formWay) { case 2-1 : //正确 ... case a-2 : //错误 ... case 2.0 : //错误 ... } 另外,在case 与常量值之后,需要一个冒号,请注意不要疏忽。
C++程序设计
第五、default是可选中,如果没有default,程序在找不到匹配的case分支 后,将在switch语句范围内不做什么事,直接完成switch。
第六、switch并不能代替所有有if..else...语句。它在对变量做判断时,只能 对整型或字符型的变量做判断。另外,switch也只能做“值是否相等”的判 断。不能在case里写条件: switch (i) { case (i >= 32 && i<=48) //错误!case里只能写变量的可能值,不能写条件。 ... } //在这种情况下,只能通过 if...else来实现。
ch = ( ch >= 'A' && ch <= 'Z' ) ? ch + 32 : ch ;
条件运算符“?:”
C++程序设计
switch语句
• 根据一个整型表达式的值决定程序分支
switch ( 整型表达式 ) { case 常量表达式 1 : 语句 1 case 常量表达式 2 : 语句 2 „ case 常量表达式 n :语句 n default : 语句 n+1 }
return 0; }
C++程序设计
分支结构
x>=y? 输入3个数x,y,z [t] max赋值x [f] max赋值y
【例2.2】 输入三个数,输出 其中的最大数。
z>max? [t]
[f]
max赋值z 输出max
例题2.2活动图
C++程序设计
if 语句
• if (表达式) 语句1; • if (表达式) 语句1; else 语句2;
C++程序设计
第三、break 的作用。 break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到 switch接的一对{}之后),完成switch。如果没有这个break,程序将在继 续前进到下一分支,直到遇到后面的break或者switch完成。 第四、csae 和 default 仅起语句标号作用,不能控制程序流程,一旦选中 一个case分支后,将继续往下顺序执行语句序列。根据以上特点,可以写 出多个 case 共执行一个语句的形式
C++程序设计
例2.4 输入一个年份,判断是否为闰年 #include<iostream> using namespace std; int main () { int year; cout<<“输入年份”<<endl; cin >> year ; if (year%4==0&&year%100!=0||year%400==0) cout << year << “年时闰年” << endl ; else cout<<year<<“年不是闰年”<<endl; return 0; }
相关主题