上游充通大皇 C++程序设计与实践 上海交通大学 机械与动力工程学院 2014.9-2015.个 上浒充通大¥ ANGHA IMO TONG UNIVERSITY 1920 第2讲C+程序的流程控制 1.运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4. 循环结构程序设计 5.标准文件输入输出
1 C++程序设计与实践 上海交通大学 机械与动力工程学院 2014.9-2015.1 第 2 讲 C++程序的流程控制 1. 运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4. 循环结构程序设计 5. 标准文件输入输出
算术运算符 口完成各种类型数据的加、减、乘、除及模(求余数)运算 口双目算术运算(两个运算对象参加的运算) 运算符合 运算规则 示例 蓋 + 加 2+3 若操作数均为整 减 a-b 数,运算结果舍 去小数部分 米 乘 2*(-a 如果是负数,向 川 除 12/3.0 乘号不能省略 零取整! % 取模 15%4 只能对整型或字符型数据运算 不能用于f1oat和doub1e类型 -12%5-→-2 -12%(-5) 余数符号与被除数相同 0 周上泽大通大淫 12%(-5)367 优先级与混合运算 口优先级与结合性 √先乘除后加减:() % √左结合性:先左后右 double —float 口混合运算 高 不同类型的数据要先转换成同一类 long 型,然后进行运算 unsigned 低 int char,short 周上濟文通大¥ 4/67 2
2 3/67 完成各种类型数据的加、减、乘、除及模(求余数)运算 双目算术运算(两个运算对象参加的运算) 运算符合 运算规则 示例 + 加 2+3 - 减 a-b * 乘 2*(-a) / 除 12/3.0 % 取模 15%4 注意:乘号不能省略 ! -12%(-5) 只能对整型或字符型数据运算 不能用于float和double 类型 余数符号与被除数相同 若操作数均为整 数,运算结果舍 去小数部分 如果是负数,向 零取整! 12%(-5) -12%5-2 算术运算符 4/67 优先级与结合性 先乘除后加减:() * / % + — 左结合性:先左后右 混合运算 不同类型的数据要先转换成同一类 型,然后进行运算 优先级与混合运算
优先级与混合运算 假设已指定i为整型变量,f为float变量,d为double型变 量,e为long型,有下面表达式: 10+'a'+i*f-d/e 运算次序为: ①进行10+'a'的运算,先将'a转换成整数97,运算结果为107。 ②进行i*f的运算。先将i与f都转换成double?型,运算结果为 double型。 ③整数107与i*f的积相加。先将整数107转换成双精度数(小数 点后加若干个0,即107.000..00),结果为double型。 ④将变量c转换成double型,d/e结果为double型。 ⑤将10+'a'+i*的结果与d/e的商相减,结果为double型。 周上海文通大学 5/67 自增(+)、自减(-)运算符 i=6;it+;∥i=i+1i=7 i=6;++i; ∥i=i+1i=7 L7 7 i i i=6;i--;∥i=i-1i=5 i=6;--i;∥ii-1 i=5 int i,j; ò4 int i,j; 4 3 i=3; i=3; j=++i; j=i++; e4j=4 i=4j3 +在前,先运算,后赋值 +在后,先赋值,后运算 周上濟文通大¥ 6/67 3
3 5/67 注意: 假设已指定i为整型变量,f为float变量,d为double型变 量,e为long型,有下面表达式: 10+′a′+i*f-d/e 运算次序为: ①进行10+′a′的运算,先将′a′转换成整数97,运算结果为107。 ②进行i*f的运算。先将i与f都转换成double型,运算结果为 double型。 ③整数107与i*f的积相加。先将整数107转换成双精度数(小数 点后加若干个0,即107.000…00),结果为double型。 ④将变量e转换成double型,d/e结果为double型。 ⑤将10+′a′+i*f的结果与d/e的商相减,结果为double型。 优先级与混合运算 6/67 i 6 i 3 int i, j; i=3; j = ++i; i=4 j=4 ++在前, 先运算,后赋值 int i, j; i=3; j = i++; i=4 j=3 ++在后, 先赋值,后运算 j 4 4 i 3 j 4 3 i=6; i++; // i=i+1 i=7 i=6; ++i; // i=i+1 i=7 i=6; i--; // i=i-1 i=5 i=6; --i ; // i=i-1 i=5 i 67 自增(++)、自减(--)运算符 7
自增(++)、自减(一)运算符 口自增、自减运算符只能用于变量,不可用于常量和表达式 √常量所占的空间不能重新赋值 √表达式在内存内没有具体空间 3++ (x+y)+ (一i)++ 口结合方式自右至左,优先级最高,向右取最大 一i++ 一(i++) 若i=3,j=2(1+)+j等于5 i=4,j=2 若i=3, 一++等于3 i=4 圈上海大通大学 7167 强制类型转换运算符 口(类型名)(表达式) (double)a (int)(x+y) (int)6.2%4=2 口在强制类型运算后原变量不变,但得到一个所需类型的中间变量。 如:intX; X=5 y的值没有改变, float y=5.8; 仍是单精度浮点型 x=(int)y; y=5.8 周上泽文通大¥ 8/67 4
4 7/67 自增、自减运算符只能用于变量,不可用于常量和表达式 常量所占的空间不能重新赋值 表达式在内存内没有具体空间 3++ (x+y)++ (-i)++ 若i=3, j=2 (i++) +j 等于 5 i=4, j=2 结合方式自右至左,优先级最高,向右取最大 -i++ -(i++) 若i=3 , -i++ 等于 -3 i=4 自增(++)、自减(--)运算符 8/67 (类型名)(表达式) (double) a (int) (x+y) (int) 6.2%4=2 在强制类型运算后原变量不变,但得到一个所需类型的中间变量。 如:int x; float y=5.8; x=(int)y; x=5 y=5.8 y的值没有改变, 仍是单精度浮点型 强制类型转换运算符
赋值运算符 口赋值运算符“-” 格式:V=e表达式的值为e; 其作用是将表达式的值存入变量V。 口复合赋值运算符 格式:Vop=e 等价于:V=Vope 例如:a+=5,等价于a=a+5 口复合赋值运算符包括: +=、-=、*=、/仁、%=、=、&=、∧=、=等10个 周上濟大道大学 9167 赋值运算符 口ijm*n: 计算表达式m*n的值,将其结果存入变量j中,然后再将结果 存入变量中。 口temp=a; a=b; b=temp; 交换a和b的值,temp是个中间变量。 ▣a+=3 a=a+3 ▣x*=y+3 X=x*y+3) ▣x/=x-4 x=x/(x-4) 口“=”的结合性为自右至左 图上海夫通大学 10/67 5
5 9/67 赋值运算符 “=” 格式: V = e 表达式的值为e; 其作用是将表达式的值存入变量V。 复合赋值运算符 格式: V op = e 等价于: V = V op e 例如: a += 5, 等价于 a = a + 5 复合赋值运算符包括: +=、- =、*=、/=、%=、>=、&=、∧=、|=等10个 赋值运算符 10/67 i=j=m*n; 计算表达式m*n的值,将其结果存入变量j中,然后再将结果 存入变量i中。 temp=a; a=b; b=temp; 交换a和b的值,temp是个中间变量。 a+=3 a=a+3 x*=y+3 x=x*(y+3) x/=x-4 x=x/(x-4) “=”的结合性为自右至左 赋值运算符
隐式类型转换 口若“=”两边变量类型不同,在赋值时要进行类型转换。 转换原则:根据左边变量的类型转换。 √将浮点型数据(包括单、双精度)赋给整型变量时,舍 弃其小数部分 √将整型数据赋给浮点型变量时,数值不变,但以指数形 式存储到变量中 √将一个double型数据赋给float3变量时,要注意数值范围不 能溢出 √字符型数据赋给整型变量,将字符的ASCⅡ码赋给整型变 量 周上濟大道大学 11/67 隐式类型转换 口int、short或long型数据赋给一个char型变量,低8位原封不 动地送到char型变量 例如 short int i=289; char c; c=i; /将一个int型数据赋给一个char型变量 i=2890000000100100001 c=33 周上濟文通大¥ 12/67 6
6 11/67 若“ = ” 两边变量类型不同,在赋值时要进行类型转换。 转换原则:根据左边变量的类型转换。 将浮点型数据(包括单、双精度)赋给整型变量时,舍 弃其小数部分 将整型数据赋给浮点型变量时,数值不变,但以指数形 式存储到变量中 将一个double型数据赋给float变量时,要注意数值范围不 能溢出 字符型数据赋给整型变量,将字符的ASCII码赋给整型变 量 隐式类型转换 12/67 int、short或long型数据赋给一个char型变量,低8位原封不 动地送到char型变量 例如 short int i=289; char c; c=i; //将一个int型数据赋给一个char型变量 c = 33 '!' 隐式类型转换
赋值表达式 a=12; a+=a-=a*a; 请计算结果! a=a-(a*a)=12-(12*12)=-132 a=a+(-132)=-132-132=-264 a -264 周上海文通大学 13/67 关系运算符 口关系运算:是对两个运算数进行大小关系等的比较。 运算符 名称 例子 关系 大于 a>b a大于b 小于 a=b a大于等于b 小于等于 ab 例:a=3,b-2,c=1 d=a>b>c 0 图上海文通大学 14/67 7
7 13/67 a=12; a+=a-=a*a; a 12 a=a-(a * a) =12-(12*12)=-132 a=a+(-132)=-132-132=-264 -132 -264 请计算结果! 赋值表达式 14/67 关系运算:是对两个运算数进行大小关系等的比较。 运算符 名称 例子 关系 > 大于 a>b a大于b = 大于等于 a>=b a大于等于b b d=a>b>c 1 0 关系运算符
逻辑运算符 口计算结果:逻辑值(true(真)和false(假) 口运算对象:算术、关系、赋值、字符及逻辑表达式 &&所有操作:与 所有操作:或 !所有操作:非 真&&真=真 真‖真=真 !真=假 真&&假=假 真‖假=真 假=真 假&&假=假 假‖假=假 周上海文通大学 15/67 关系表达式 口x=b 口和j均小于或等于100,或者和j均大于k (ik&&j>k) 口选未婚、30岁以上女讲师和35岁以上男副教授 !婚否&&((性别=‘男’&&职称=‘副教授’&&年龄 >=35)‖(性别=‘女’&&职称=‘讲师’&&年龄 >=30)) 赋值运算<川、&〈关系运算<算术运算<!(非) 周上濟文通大¥ 16/67 8
8 15/67 计算结果:逻辑值(true(真)和false(假)) 运算对象:算术、关系、赋值、字符及逻辑表达式 &&所有操作:与 真 && 真 = 真 真 && 假 = 假 假 && 假 = 假 真 || 真 = 真 真 || 假 = 真 假 || 假 = 假 ||所有操作:或 !所有操作:非 !真 = 假 !假 = 真 逻辑运算符 16/67 xc或xb至少之一成立 x = b i和j均小于或等于100,或者i和j均大于k ( i k && j > k ) 选未婚、30岁以上女讲师和35岁以上男副教授 ! 婚否 && ( (性别==‘男’&& 职称==‘副教授’&& 年龄 >=35)|| (性别==‘女’&& 职称==‘讲师’&& 年龄 >=30)) 赋值运算< ||、&& < 关系运算 < 算术运算< !(非) 关系表达式
关系表达式 口判别闰年:符合下面2个条件之一 √能被4整除,但不能被100整除 √能被100整除,又能被400整除 (year %4==0 &year%100!=0)Ilyear%400==0 口如何判别非闰年? !(year%4==0&&year%100I=0 llyear%400=0) (year%4!=0)‖(year%100==0&&year%4001=0) 周上濟大道大学 17/67 上浒充通大¥ ANGHA IMO TONG UNIVERSITY 1920 1987 2006 第2讲C+程序的流程控制 1.运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4.循环结构程序设计 5.标准文件输入输出 9
9 17/67 判别闰年:符合下面2个条件之一 能被4整除,但不能被100整除 能被100整除,又能被400整除 (year %4==0 && year%100!=0)||year%400==0 如何判别非闰年? !((year %4==0 && year%100!=0)||year%400==0) (year %4!=0) || (year%100==0&&year%400!=0) 关系表达式 第 2 讲 C++程序的流程控制 1. 运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4. 循环结构程序设计 5. 标准文件输入输出
程序设计基本结构 ▣程序流程按其在解决问题过程中,各处理步骤的执行次 序和模式,通常包含三大基本控制结构: √顺序结构 √选择结构 顺序 选择 √循环结构 结构 结构 任何程序只用这三种基 本控制结构就可以实现。 循环结构 周上濟大道大学 19/67 程序设计基本结构 口顺序结构:一个步骤完成后,顺 开始 序执行紧跟着的下个处理步骤。 语句1 口如播放电视节目,按节目单先后 顺序直线播下来。 语句2 语句n 结束 周上泽文通大¥ 20/67 10
10 19/67 程序流程按其在解决问题过程中,各处理步骤的执行次 序和模式,通常包含三大基本控制结构: 顺序结构 选择结构 循环结构 选择 结构 循环结构 顺序 结构 程序设计基本结构 任何程序只用这三种基 本控制结构就可以实现。 20/67 顺序结构:一个步骤完成后,顺 序执行紧跟着的下个处理步骤。 如播放电视节目,按节目单先后 顺序直线播下来。 开始 语句1 语句2 结束 语句n … 程序设计基本结构