苏小红c语言程序设计ppt,C语言程序设计课件(苏小红)第3章.ppt

《C语言程序设计课件(苏小红)第3章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件(苏小红)第3章.ppt(51页珍藏版)》请在人人文库网上搜索。

1、第3章 简单的算术运算 和表达式,哈尔滨工业大学 计算机科学与技术学院 苏小红,本章学习内容, 算术运算符 增1和减1运算符 宏常量与 const常量 表达式与赋值中的自动类型转换 强制类型转换运算符 常用的标准数学函数,运算符( Operator ),详见附录C 常见的运算符 算术运算符 赋值运算符 强制类型转换 关系运算符 逻辑运算符 增和减 位运算符,3.1C运算符和表达式(Operator and Expression),何谓运算符和操作数?,3.1.1算术运算符和表达式,Arithmetic Operators,除法(Division),Example:,整数除法(Integer D。

2、ivision),11 / 5 = 2,Example:,实数除法(Floating Division),11.0 / 5 = 2.2,求余(Modulus),It returns the remainder that occurs after performing the division of 2 operands Rule: Operands must be integers,注意!,Example:,11 % 5 = 1,11,5,2,10,1,求余(Modulus),Example:,-11 % 5 = -1,-11,5,-2,-10,-1,求余(Modulus),Example:,。

3、11 % -5 = 1,11,-5,-2,10,1,求余(Modulus),Example:,11.0 % 5 = ?,求余(Modulus),注意!,当算术表达式包含两个或两个以上的算术运算符时 首先要确定运算顺序 所有的运算符都有一个优先级( Order of Precedence ),算术表达式(Arithmetic Expression),优先级(Order of Precedence) High:* / % Low: + - 不同优先级时的运算顺序: 从高到低 相同优先级时的运算顺序: 算术运算符为左结合(从左到右),算术表达式(Arithmetic Expression),Exam。

4、ple:,?,4,8.5,2.5 + 6 , 4,4.5,2.5 + 6 2 * 2 =,算术表达式(Arithmetic Expression),4.5,巧妙使用圆括号改变运算顺序 从内往外运算,Example:,( 9 ( 3 + 2 ) ) * 3 = ?,算术表达式(Arithmetic Expression),Example: ( 9 ( 3 + 2 ) ) * 3 = ?, 5,4,12, ( 9 ( 3 + 2 ) ) * 3 = 12,算术表达式(Arithmetic Expression),赋值语句(Assignment Statement),三种赋值形式: Simple简单。

5、赋值 Multiple多重赋值 Shorthand简写的复合赋值,算术混合运算,【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和,关键是如何分离个位、十位和百位数字?,153 % 10 = 3,153 / 100 = 1,153 1*100 = 53,53 / 10 = 5,【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和,#include main() int x = 153, b0, b1, b2, sum; b2 = x / 100; b1 = (x - b2 * 100) / 10; b0 = x % 10; sum = b2 + b1 + b0; printf。

6、(b2=%d, b1=%d, b0=%d, sum=%dn, b2, b1, b0, sum); ,变量的赋值,简单赋值(Simple Assignment): 变量 = 表达式 ;,多重赋值(Multiple Assignment): 变量1 = 变量2 = 表达式 ;,Syntax: 变量x = 变量x 运算符op 表达式 ; 变量x 运算符op = 表达式;,3.1.2复合的赋值运算符(Combined Assignment Operators),这种形式看起来更直观,且执行效率一般也更高一些,Example: num = num + 5;,15 + 5,20,20,Example: n。

7、um += 5;,similar to num = num + 5,3.1.2复合的赋值运算符(Combined Assignment Operators),已知 int a = 3; 执行 a += a -= a * a 后,变量a的值? a += a -= a * a a += a -= 9 a += -6 a = -12,3,-6,-12,执行 a += a -= a *= a 后,变量a的值? a += a -= a *= a a += a -= 9 a += 0 a = 0,3,9,0,0,简写的复合赋值(Shorthand Assignment),3.1.2复合的赋值运算符(Com。

8、bined Assignment Operators),3.1.3增1和减1运算符(Increment and Decrement),n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀(postfix)运算符时,先取n的值,然后加/减1,3.1.3增1和减1运算符(Increment and Decrement),n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀(postfix)运算符时,先取n的值,然后加/减1 作为前缀(prefix)运算符时,先加/减1,然后取n的值,Example: j = +i - 2,similar to。

9、 i = i + 1; j = i 2;,4,6,前缀( Prefix )增1和减1运算符,Example: j = i+ - 2,similar to j = i 2; i = i + 1;,后缀(Postfix)增1和减1运算符,3,6,int a=3; printf(%d, -a+);,similar to printf(%d, -a); a = a + 1;,后缀(Postfix)增1和减1运算符,4,良好的程序设计风格提倡: 在一行语句中,一个变量只能出现一次增1或者减1运算 过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果,3.。

10、1.3增1和减1运算符(Increment and Decrement),【例3.2】计算圆的周长和面积,circumference = 33.300854 area = 88.247263,#include main() double r = 5.3; printf(circumference = %fn, 2*3.14159*r); printf(area = %fn, 3.14159*r*r); ,#include main() double r; printf(Input r:); scanf(%lf, ,【例3.3】计算圆的周长和面积,Input r: 5.3 circumferen。

11、ce = 33.300854 area = 88.247263,在程序中直接使用的常数称为幻数(Magic Number),使用幻数存在的问题?,直接使用常数会有什么影响? 程序的可读性变差 容易发生书写错误 当常数需要改变时,要修改所有引用它的代码,工作量大,还可能有遗漏 解决方案: 避免使用幻数 把幻数定义为常量(宏常量、const常量),3.2宏常量与宏替换,#define 标识符 字符串 宏常量(Macro Constant ) 也称符号常量 一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令,#include main() double r; printf(Input r。

12、:); scanf(%lf, ,【例3.4】计算圆的周长和面积,宏替换,#include #define PI 3.14159; #define R 5.3; main() printf(area = %fn, PI * R * R); printf(circumference = %fn, 2 * PI * R); ,相当于执行 #include main() printf(area = %fn, 3.14159;*5.3;*5.3;); printf(circumference = %fn, 2*3.14159;*5.3;); ,语法错误,计算圆的周长和面积,#include main()。

13、 const double PI = 3.14159; double r; printf(Input r:); scanf(%lf, ,const常量与宏常量相比的优点是什么? const常量有数据类型 某些集成化调试工具可以对const常量进行调试,3.3 const常量,【例3.5】,表达式与赋值中的自动类型转换,相同类型数据的运算结果,还是该类型 不同类型数据的运算结果,是两种类型中取值范围大的那种 long double double float long int short char,double,float,long,unsigned,int,char,short,表达式与赋值中的。

14、自动类型转换,取值范围小的类型赋值给取值范围大的类型是安全的 反之是不安全的 若大类型的值在小类型能容纳的范围之内,则平安无事。但是浮点数转为整数,会丢失小数部分,而非四舍五入 反之转换后的结果必然是错误的,具体结果与机器和实现方式有关 避免如此使用,好的编译器会发出警告,注意!,表达式与赋值中的自动类型转换,【例 3.6】下面程序演示了赋值中的类型转换,Example: int x = 10; float y; y = (float)x;,(float)10,10.000000,3.4自动类型转换与强制类型转换运算符,强转(Casting)可以消除从大到小的警告 通过下面方式把表达式的值转为。

15、任意类型 (类型)表达式,不改变x,Example: int total, number; float average; average = total / number;,15 / 2,7,两个整数运算的结果 还是整数,不是浮点数,3.4自动类型转换与强制类型转换运算符,Example: int total, number; float average; average = (float)total / number;,15.000000 / 2,7.500000,3.4自动类型转换与强制类型转换运算符,【例3.7】演示强制类型转换运算符的使用,m/2 = 2 (float)(m/2) = 。

16、2.000000 (float)m/2 = 2.500000 m = 5,3.5 常用的标准数学函数,【例3.8】计算三角形面积,area = sqrt(s * (s - a) * (s - b) * (s - c) area = sqrt(s(s-a)(s-b)(s-c) s = 0.5 * (a + b + c) s = 1.0/2 * (a + b + c) s = (a + b + c) / 2.0 s = (float)(a + b + c) / 2 s = 1/2 * (a + b + c) s = (float)(a + b + c) / 2),注意!,【例3.8】计算三角形面积,Input a,b,c:3,4,5 area = 6.000000,Questions and answers。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值