《2022年《C语言程序设计》谭浩强版教学教案k.docx》由会员分享,可在线阅读,更多相关《2022年《C语言程序设计》谭浩强版教学教案k.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -名师精编 优秀教案宜宾学院教案C语言程序设计 _课程周次第 3 周,第 1 次课章节第三章数据类型、运算符与表达式3.7 各类数值型数据间的混合运算名称3.8 算术运算符和算术表达式3.9 赋值运算符和赋值表达式授课课堂讲授( );试验课();其他方式()教学2 学时时 间方式时数教学1、把握 C语言数据类型基本概念;2、把握不同类型数据之间的转换规章;目的3、把握运算符与表达式的规章和使用方法;教学教学重点与难点:重点1、C语言数据类型基本概念;与难2、不同类型数据之间的转换规章;点3、运算符与表达式的规章
2、和使用方法;参考C语言程序设计教程谭浩强高等训练出版社C高级有用程序设计王士元清华高校出版社C程序设计及应用李盘林、孟宪福著高等训练出版社资料C语言程序设计王树义钱达源编著大连理工高校出版社授课C语言程序设计课程教案何明儒教授等四川高校运算机学院步骤一:复习上次课内容内容安排与过用运算符和括号将运算对象(数据)连接起来的、符合C 语法规章的约5程句子称为表达式;步骤二:讲授新课分钟 3.7 各类数值型数据间的混合运算整型(包括 int,short,long)、浮点型(包括 float,double)可以混合运算;在进行运算时,不同类型的数据要先转换成同一类型 , 然后进行运算. 其转换规章如下
3、:double float 高约 40long 分钟unsigned 低 intchar,short 上述的类型转换是由系统自动进行的细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - 3.8名师精编优秀教案算术运算符和算术表达式3.8.1 运算符简介的运算符有以下几类:1 算术运算符(+ - * / %)2 关系运算符(!)3 规律运算符(! | )4 位运算符( |)5 赋值运算符(及其扩展赋值运算符)6 条
4、件运算符(?:)7 逗号运算符 , 8 指针运算符(* 和)9 求字节数运算符()10 强制类型转换运算符( 类型) 11 重量运算符(- )12 下标运算符( )13 其他 (如函数调用运算符()3.8.2 算术运算符和算术表达式1 基本的算术运算符 : (加法运算符,或正值运算符;如 : 、) (减法运算符,或负值运算符;如 : 、)* (乘法运算符;如 : *) (除法运算符;如 : ) (模运算符,或称求余运算符,两侧均应为整型数据,如 : 的值为);2 算术表达式和运算符的优先级与结合性基本的算术运算符 : 用算术运算符和括号将运算对象 也称操作数 连接起来的、符合语法规章的式子,称
5、为算术表达式;运算对象包括常量、变量、函数等;例如 : * .5 a 是一个合法的表达式语言规定了运算符的优先级和结合性;在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除 后加减;规定了各种运算符的结合方向 结合性 ,算术运算符的结合 方向为 “ 自左至右 ” ,即先左后右;3 强制类型转换运算符 可以利用强制类型转换运算符将一个表达式转换成所需类型;一般形式 : (类型名)(表达式)例如: double将转换成double 类型intx+y 将 x+y 的值转换成整型float(5%3)将 5%3的值转换成float型例 3.8 强制类型转换;细心整理归纳 精选学习资料 - -
6、- - - - - - - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -名师精编 优秀教案#include void () ; ;(); printfx=%f, i=%dn,x, i; 4 自增、自减运算符 作用是使变量的值增或减,如:,(在使用之前,先使的值加(减),(在使用之后,使的值加(减)i+ 与+i 的区分:是先执行后,再使用的值;是先使用的值后,再执行;例如:; i 的值先变成 4, 再赋给 ,j 的值均为 ;先将 i 的值 3 赋给 , 的值为,然后变为留
7、意:自增运算符()用于常量或表达式,自减运算符() ,只能用于变量,而不能和的结合方向是“ 自右至左 ” ;自增(减)运算符常用于循环语句中使循环变量自动加;也用于指针变量,使指针指向下一个地址5 有关表达式使用中的问题说明ANSI C 并没有详细规定表达式中的子表达式的求值次序,答应各编译系统自己支配;例如:对表达式 a = f1 +f2 f1 , 然后调用f2 ;在有的情并不是全部的编译系统都先调用况下结果可能不同;有时会显现一些令人简单搞混的问题,因此务必要小心谨慎;语言中有的运算符为一个字符,有的运算符由两个字符组成,为防止误会,最好实行大家都能懂得的写法;例如:不要写成i+j的形式,
8、而应写成 i+j的形式在调用函数时,实参数的求值次序,标准并无统一规定;例如:的初值为,假如有下面的函数调用: printf( , , i+ )在有的系统中,从左至右求值,输出“ ,”;在多数系统中对函数参数的求值次序是自右而左,函数输出的是“ ,” ;以上这种写法不宜提倡,最好改写成j = i+; printf%d, %d , j ,i 不要写出别人看不懂的也不知道系统会怎样执行程序细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - -
9、- - - - - -名师精编 优秀教案 3.9 赋值运算符和赋值表达式1.赋值运算符赋值符号“ ” 就是赋值运算符,它的作用是将一个数据赋给一个变量;如“ ” 的作用是执行一次赋值操作(或称赋值运算);把常量约 40赋给变量;也可以将一个表达式的值赋给一个变量. 2. 类型转换分钟假如赋值运算符两侧的类型不一样,但都是数值型或字符型时,在赋值时要进行类型转换;将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分;如: 为整型变量,执行“式储备在整型变量中 . i=3.56 ” 的结果是使的值为,以整数形将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中如 :
10、将赋给float变量,即执行,先将转换成 0,再储备在中;将赋给型变量,即执行,就将补足有效位数字为,然后以双精度浮点数形式储备到变量中;将一个 double 型数据赋给 float 变量时,截取其前面 7 位有效数字,存放到 float 变量的储备单元 ( 4 个字节) 中;但应留意数值范畴不能溢出;如:float f;double d=123.456789e100; f=d; 就显现溢出的错误;假如将一个 float 型数据赋给 double 变量时,数值不变,有效位数扩展到 16 位,在内存中以 8 个字节储备字符型数据赋给整型变量时,由于字符只占1 个字节,而整型变量为个字节,因此将字
11、符数据(个二进位)放到整型变量储备单元的低 位中;第一种情形 : 假如所用系统将字符处理为无符号的字符类型,或程序已将字符变量定义为 位,高位补零型,就将字符的位放到整型变量低例如:将字符 赋给型变量其次种情形: 假如所用系统 (如 Turbo C+)将字符处理为带符号的 (即 signed char ),如字符最高位为,就整型变量高位补;如字符最高位为,就高位全补;这称为“ 符号扩展 ” ,这样做的目的是使数值保持不变,如变量(字符 )以整数形式输出为,的值也是;将带符号的整型数据(int 型)赋给 long 型变量时,要进行符号扩展,将整型数的 16 位送到 long 型低 16 位中 :
12、 假如 int 型数据为正值 (符号位为) ,就 long 型变量的高 16 位补;假如 int 型变量为负值 (符号位为) ,就 long 型变量的高 16 位补,以保持数值不转变;细心整理归纳 精选学习资料 反之,如将一个long 型数据赋给一个int型变量,只将long 型数据 第 4 页,共 7 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -名师精编 优秀教案中低 16 位原封不动地送到整型变量(即截断); 例如: int a; long b; a
13、=b 赋值情形如图 : 假如 (八进制数)见图 3.14 ,就赋值后值为;将 unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高位补即可;将一个unsigned 类型数据赋给一个占字节数相同的非 unsigned 型整型变量(例如:unsigned int -int,unsigned long-long,unsigned short-short),将 unsigned 型变量的内容原样送到非 unsigned 型变量中,但假如数据范畴超过相应整型的范畴,就会显现数据错误;例如: unsigned int 65535; int b; ;将整个送到中, 由于是
14、 int, 第位是符号位,因此 b 成了负数;依据补码学问可知,的值为 -1 ,可以用 printf(%d ,) ; 来验证;将非 unsigned 型数据赋给长度相同的 照赋(连原有的符号位也作为数值一起传送)例 3.9 有符号数据传送给无符号变量;#include void () ; ;unsigned 型变量,也是原样( n ,);强调:“ %u” 是输出无符号数时所用的格式符;假如为正值,且在32767 之间,就赋值后数值不变;赋值情形见图运行结果: 6 5 5 3 5 3. 复合的赋值运算符在赋值符“ ” 之前加上其他运算符,可以构成复合的运算符;例如 : 等价于等价于* 等价于 *
15、() 以“ ” 为例来说明,它相当于使进行一次自加的操作;即先使加,再赋给;为便于记忆,可以这样懂得: a += b 其中 a 为变量, b 为表达式 a += b(将有下划线的“a+” 移到 “=” 右侧) |_ a = a + b (在 “=” 左侧补上变量名 a)留意 : 假如是包含如干项的表达式,就相当于它有括号;如: x %= y+3 细心整理归纳 精选学习资料 x %= y+3 |_x=x%y+3 第 5 页,共 7 页 x = x %y+3不要错写成 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - -
16、 - - - - - - - - - - - - -名师精编 优秀教案凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符;语言规定可以使用种复合赋值运算符:, * ,| 4. 赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“ 赋值表达式” ;一般形式为 : 例如 : “ 5” 是一个赋值表达式对赋值表达式求解的过程是:求赋值运算符右侧的“ 表达式 ” 的值 ; 赋给赋值运算符左侧的变量;例如 : 赋值表达式 “ =3*5 ” 的值为 15,执行表达式后,变量 a 的值也是 15;留意 : 一个表达式应当有一个值左值 lvalue: 赋值运算符左侧的标识符变量可以作为左值
17、;而表达式就不能作为左值 如 a+b ;常变量也不能作为左值,右值 lvalue: 显现在赋值运算符右侧的表达式 左值也可以显现在赋值运算符右侧,因而左值都可以作为右值;赋值表达式中的“ 表达式”,又可以是一个赋值表达式 . 例如 : a=b=5 分析 : 括弧内的 “b=5 ” 是一个赋值表达式,它的值等于 5;执行表达式“ a=b=5 ”相当于执行 “ b=5”和“ a b”两个赋值表达式;赋值运算符依据 “ 自右而左 ” 的结合次序,因此,“b5 ” 外面的括弧可以不要,即“a=b=5”和“a=b=5 ” 等价 . 请分析下面的赋值表达式a=3*5=4*3 不能写成 :a=3*5=4*3
18、 分析 : 先执行括弧内的运算,将15 赋给 a,然后执行4*3 的运算,得12,再把 12 赋给 a;最终 a 的值为 12,整个表达式的值为12;可以看到 a=3*5显现在赋值运算符的左侧,因此赋值表达式 a=3*5 是左值留意 : 在对赋值表达式 a=3*5 求解后,变量 a 得到值 15 执行 a=3*5=4*3 时,实际上是将 4*3 的积 12 赋给变量 a,而不是赋给 3*5 ;赋值表达式也可以包含复合的赋值运算符;如: a+=a-=a*a 分析 : 此赋值表达式的求解步骤如下 先进行 “ * ” 的运算,它相当于* ,a 的值为 144 132;再进行 “ ” 的运算,相当于=
19、a+-132 , a 的值为132-132 -264 ;将赋值表达式作为表达式的一种,使赋值操作不仅可以显现在赋值语句中,而且可以以表达式形式显现在其他语句(如输出语句、循环语句等)细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -中. 名师精编优秀教案约5如: printf%d,a=b; 分钟分析 : 假如 b 的值为 3, 就输出 a 的值 也是表达式 一个语句中完成了赋值和输出双重功能;步骤三 课堂小结a=b 的值 为 3;在1、算术运算符、规律运算符的应用,及相关表达式的规律值2、 + 、- 运算3、各种运算符的优先级步骤四 布置作业练习: P66 3.9、3.10 、3.11 、3.12 课后习题3.6,3.9 课堂争论争论课后习题3.6,3.9 与练习课后记录注:教案按授课次数填写, 每次授课均应填写一份; 重复班授课可不另填写教案;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 7 页 - - - - - - - - -
限制150内