欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx

    • 资源ID:27259694       资源大小:168.12KB        全文页数:11页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx

    名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -C 语言程序设计课程教案表授课题目3)课时支配2 其次章基本数据类型和表达式(授课时间教学目的和要求1把握:指针运算 2明白:位运算符及逗号运算符 教学内容 1基本内容: (1)指针运算( 2)其他运算符及表达式 2重点:指针变量的定义与应用、指针运算 3难点:指针运算 讲课进程和时间安排 、地址与指针的概念(15 分钟)(1)变量的指针与变量的值1地址 :在运算机中, 把内存区划分为一个一个的储备单元,它们都有一个编号,这个编号就是内存地址板书上面这个图,以便使同学更好地懂得内存地址;每个单元为一个字节 (位),如有定义: char c=A; int a=3; 就所占内存情形如下:留意: c 和 a 的地址可能相邻,也可能不相邻,是由系统安排的,我们不用关怀;【例 2.11】输出变量的值和变量的指针 地址 ;main int a=10,b=20 ;细心整理归纳 精选学习资料 char c=X ,d=Y ; 第 1 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -float e=5.6,f=-2.8 ;printf “ %d,%dn ” ,a,b;printf “ %c,%cn ” ,c,d;printf “ %f,%fn ” ,e,f;printf “ %p,%p,%p,%p,%p,%pn ” ,a,b,c,d,e,f; 输出结果 : 12,20 通过上述例题,使同学区分变量的值和变量地址(指针)两个专业术语;(2)变量的指针和指针变量 C 语言中一个变量所安排的内存空间首字节地址,称为该变量的指针 地址 ;一个指针 变量的值是存放另一个变量的地址;例如:int a=10,*p; p=&a; p,如图 2-9 所示;将变量 a 的地址赋给指针变量2、指针变量的定义与引用(20 分钟)(1)指针变量的定义指针变量的定义格式:数据类型 *< 标识符 >;说明: “* ”表示该变量为一个指针变量;<标识符 >为指针变量名,取名规章与一般变量 取名规章相同;细心整理归纳 精选学习资料 例 :int *p1 ;/* 定义 p1 为指向整型变量的指针变量*/ 第 2 页,共 8 页 char *c1;/* 定义 c1 为指向字符型变量的指针变量*/ - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -float *f1 ;/* 定义 f1 为指向实型变量的指针变量*/ 以上定义的3 个指针变量,其中,p1 可以存放整型变量的地址;c1 存放字符型变量的地址; f1 存放实型变量的地址;(2)与指针有关的两个运算1) & 取地址运算符作用:取变量内存单元的地址;取变量地址的运算符“ &”在前面输入语句时已经使用过;如: scanf “ %d” ,&a;/*向变量 a 的地址中输入数据 */ 一个指针变量只能指向其定义中所说明的数据类型;例: int a,*p1;char c,*c1; p1=&a ;/* 把变量 a 的地址赋给指针变量p1 */ c 的指针;c1=&c; /* 把变量 c 的地址赋给指针变量c1 */ 以上定义的p1、c1 两个指针变量,p1 的值是变量a 的指针; c1 的值是变量2) * 取内容运算符作用:取指针变量所指变量的值,又称间接拜访运算符考虑:储备单元的地址与变量间有什么样的关系 . 看下面例子 :用现实生活中的例子使同学更好地懂得上述问题,并找到两者之间联系;主任办公室 书记办公室 教学秘书办公室201 202 203 此处房间相当于储备单元、房间号相当于地址、“ 主任办公室 ” 等相当于变量名;因此,对储备单元的拜访,既可以通过 变量名 来实现, 也可以通过地址来拜访;结论:对一个变量的拜访(拜访是指存、取其值或赋值等操作)有两种方式:直接拜访间接拜访直接拜访:即直接通过变量名所对应的地址拜访数据;例: main int a=5;printf“ a=%d n” ,a ; 运行结果: a=5 通过变量名 a 与地址的对应关系,找到 a 的地址,然后从地址中取出数据 5 输出间接拜访: 即通过一个指针变量来拜访数据;间接拜访即先把某一变量的地址储存在一个指针变量中, 如对该变量的数据进行操作,先要找到储存该变量地址的指针变量,然后从指针变量中取出储存的地址,再从地址中取出数据进行运算;例:main int a=10,*p; p=&a; /* 将变量 a 的地址赋给指针变量 p */ printf“ a=%d n” ,*p ; /* *p 是取出 p 所指向的变量 a 的地址 65500 中的值 */ 运行结果: a=10 (3)指针变量的定义与引用细心整理归纳 精选学习资料 指针变量的初始化的一般格式如下:数据类型*< 标识符 >=& 变量名; 第 3 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -例: int a,*p=&a ;指针变量初始化的过程是:系统根据所定义的类型,在内存中为变量a 与指针变量p安排储备空间;同时,将变量a的地址送给指针变量p 中;在上面的定义中,p 指向 a;定义指针变量的目的是,为了通过指针变量去引用(拜访)内存单元;当一个指针变量得到一个变量的地址后,就可以用指针对变量进行操作;【例 2.12】用两种方式输出变量的值;main int a=10,b=20; int *p1=&a ;/* 指针变量的初始化 */ int *p2=&b ;printf“a=%dn”,a,b;printf“*p1=%d,*p2=%d*p1,*p2; 运行:a=10,b=20 *p1=10,*p2=20 分析结果:第一个打印语句 printf“ a=%d n” ,a,b;是用直接方式输出;其次个printf“*p1=%d,*p2=%d *p1,*p2;是用间接拜访方式输出,其执行过程是:a 的地址赋给指针变量 p1,b 的地址赋给指针变量p2;p1 指向 a,p2 指向 b如图 2-11 所示 ;*p1 和*p2 是分别从其内存单元中取出的值65500 和 65502;然后,从地址65500、 65502 中分别取出值10、 20 输出;以上说明:当 p1=&a; 就 p1 的值是 a 的地址; *p1 是 a 的值,即 *p1 与 a 等价;对某一个变量进行运算,可以用两种方法来进行 :用变量名;用指针运算符“ *”,取指针变量所指变量的值;【例 2.13】分析程序运行结果;main int a=10,b=8,c,d,*p1,*p2 ;p1=&a;p2=&b ;c=*p1+*p2 ;d=*p1-*p2 ;Printf“a+b=%d,c;Printf“ an”,d; 运行结果: a+b=18 a-b=2 说明: p1 的值是 a 的地址, *p1 是取 p1 所指变量的值,即a 的值,所以 *p1 与 a 等价;同理, *p2 与 b 等价;所以有:c=*p1+*p2 与 c=a+b 等价; c=*p1-*p2 与 c=a-b 等价;3、指针运算(20 分钟)指针运算就是地址运算;(1)指针的算术运算1指针加、减整数的运算细心整理归纳 精选学习资料 设: p 为指针变量, n 为正整数;就表达式p+n,为 p 的当前值后面第n 项数据的地址; 第 4 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -p+n 与 p 之间有多少个单元,与 p 所指向的数据类型有关;如 int 型变量在内存占2 个字节,如 p 为指向 int 型变量, p+, 指针自动向后移动 2 个字节 ,p+2 就向后移动 4 个字节;同理,表达式 p-n 为 p 的当前值前移第 n 项数据的地址,-p,就 p 前移动 2 个字节;因此, p+n 是按数据类型储备单元比例增大,而不是直接加 n;所以有:int a,*p1; p1=&a; char c,*pc;pc=&c; float f,*fp;fp=&f; p1+2; /*p1 向后移动 4 个字节 */ pc+2; /*pc 向后移动 2 个字节 */ pf+2; /*pf 向后移动 8 个字节 */ 同理: p1-3; /*p1 向前移动 6 个字节 */ pc-2; /*pc 向前移动 2 个字节 */ pf-2; /*pf 向前移动 8 个字节 */ 两个指针相加无意义2指针变量自加自减运算仍设 p 为指向 int 型的指针变量;下面由运算符 + 、-作用于指针 p,构成 4 个表达式;*p+ 取 p 的当前值,然后 p=p+1, 即指针向后移动 2 个字节;*p- 取 p 的当前值,然后 p=p-1, 即指针向前移动 2 个字节;*( +p)指针向后移动 2 个字节,然后取 p 的当前值;*( -p)指针向前移动 2 个字节,然后取 p 的当前值;指针向前( -)或向后( + )移动的字节数,与定义的指针类型有关;(2)指针的赋值运算可以把一个变量的地址赋值给一个指针变量,或者将一个有确定指向的指针变量的值,赋给另一个相同类型的指针变量;如:int a,b,*p1,*p2; /* 定义 2 个整型变量及2 个指向整型变量的指针变量*/ p1=&a; /* 变量 a 的地址赋给p1 */ p2=p1; /* p1 的值赋给 p2 ,即 p1,p2 同时指向变量a */ 3指针的关系运算指向同类型的两个指针 p1 与 p2,如, p1 值所表示的地址码在 p2 值所表示的地址码之前时,表达式 p1<p2 的值为 1;指针与一般的整型数据的比较无意义;注:“ &”取地址符号不能用于常量或表达式,由于它们没有地址;符号 “ *”的两种用途: 当“ *”显现在变量的定义位置,表示定义指针变量; 当显现在语句行中,是取指针变量所指变量的值, 又称间接拜访运算符;这是初学者简单困惑的地方;4、位运算符(15 分钟)位( bit)运算使 C 语言具备了部分低级语言的特点和功能;位运算可直接对内存的基本单位 “字节 ”(byte)按二进制进行掌握和操作;位运算符共有 6 个: 1.按位与 ( & ) 2.按位或(|) 3. 按位异或 () 4.按位求反 ()5.左移( <<) 6.右移( >>),由于位操作是按二进制进行运算,所以运算量一般为无符号整型或字符型;操作数可以是常量、变量或表达式;(1)按位与( & )操作规章:参与运算的两个运算量,假如两个相应的位均为1,就该位的结果为1,否就为 0;即:0&0=0 0&1=0 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -1&0=0 1&1=1 例如:01000001 & 01000010 (按位与 & )01000000 (结果)按位与的主要用途为:1清零;要将一个运算量的每个位清零(屏蔽),例如 a 的值为 1101101,b 的值为11110000,a&b 的结果是 11010000,相当于把 a 的低 4 位屏蔽,高 4 位不变;2取一个数中的某些位;如要把某数的某些二进制位取出来,可以把其它位清零,把需要取出的位作按位与即可;(2)按位或 | 操作规章: 参与运算的两个运算量,其相应的位中只要有一个为1,就该位的结果为1,否就为 0;即:0|0=0 0|1=1 1|0=1 1|1=1 例如:01000001 | 01000010 (按位或 |)01000011 (结果)按位或常用来对一个数的某些位置为 1;一个数为 a,要将其低字节全置为 1,即低字节为 11111111,可将该数与 255(十六进制为 FF,二进制为 11111111)按位或即可;(3) 按位异或()操作规章:参与运算的两个运算量,当相应位相同时,其结果在该位为 0,相应位不同时,其结果在该位为 1,即按位相加,但不进位;即:00=0 01=1 10=1 11=0 例如:01000001 01000010 (按位异或)00000011 (结果)按位异或的主要用途为:使指定位翻转;即由 1 变为 0,由 0 变为 1;如:要对 011100110 的低 4 位翻转,将其与00001111 按位异或即可;01100110 00001111 (按位异或)01101001 (结果)可以看到,凡是与 1 异或的都变反了,而与 0 异或的位原封不动;2不使用暂时变量,交换两个值;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -方法为:如有两个数 a=3,二进制 =011和 b=4,二进制 100,通过下面的赋值语句可将 a 和 b 的值互换:a=ab; /* a=011 100=111 */ b=ba; /*b=100 111=011,b=3 */ a=ab; /*a=111 011=100,a=4 */ 3)与 0 相,保留原值;(4)按位求反()操作规章:运算符是一个单目运算符,用来对一个数的二进制表示按位求反,即将 0变成 1,将 1 变成 0;0 = 1 1 = 0 (5)左移( <<)操作规章:将一个数的各二进制位全部左移如干位,左移后,右边的这些位用 0 填补,左边移出的位舍弃不用;运算符<< 右边的表达式表示向左移位的位数;例如: a=a<<2;如 a=15,即二进制00001111,左移两位后变为:00111100 后赋值给 a;左移可以扩大原数的倍数;即:将一个数左移 1 位,相当于该数乘以 2;左移 2 位相当于该数乘以 4;如上例中 a=15,就 a=a<<2,此时 a=15× 4=60;但是,这种情形仅指左移时没有 1 被移出去的情形;左移运算要比乘法运算快得多;(6)右移( >>)操作规章:将一个数的各二进制位全部右移如干位,运算符>> 右边的表达式表示向右移位的位数;右移后,右边移出的位被舍弃,而左边的填补分两种情形:该数为无符号数,就高位补 0;例如: a=a>>2;如 a=15,二进制为00001111,右移 2 位后为 00000011;该数为有符号数,如原先的符号位为 0(最高位为 0,即正数),就高位补 0,如上例所示;如原先的符号位为 1(即该数为负数) ,高位补 0 或 1,取决于所使用的运算机系统;有的系统补 0,称为规律右移;有的系统补 1,称为算术右移;5、逗号运算符(15 分钟)逗号运算符为 “,” ;逗号表达式是用逗号运算符把两个表达式组合成的一个表达式;其一般形式为:表达式 1,表达式 2说明:1逗号表达式的执行过程是:先求表达式1 的值,再求表达式2 的值,表达式2 的值就是整个逗号表达式的值;例如: a=8,a+10;先对 a=8 进行处理,然后运算a+10,因此上述表达式执行完后,a 的值为 8,而整个表达式的值为 18;2一个逗号表达式可以与另一个表达式构成一个新的逗号表达式;例如:(a=2*8 ,a*5 ),a+10 构成一个逗号表达式,先运算 a=2*8 的值, a=16,然后再运算 a*5=80 ;(a=2*8 ,a*5 )的值为 80,最终运算 a+10,此时 a 的值没有变,仍为 16,那么逗号表达式(a=2*8, a*5),a+10 的值为 a+10 的值,即为 26;3逗号运算符是全部运算符中级别最低的;【例 2.14】分析程序运行结果;main int x,y ;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -x=50 ;y=x=x-5,x/5 /* x 的初值 =50,减 5 后为 45,再被 5 除,所以 y=9 */ printf“y=%d,y; 运行结果: y=9 使用逗号表达式的目的仅仅是为了得到各个表达式的值,如,可用如下逗号表达式语句交换 a 和 b 两个变量中的数值:t=a,a=b,b=t;等价于: t=a;a=b;b=t;留意:逗号表达式常用于 for 语句中,它可以表达多个初值或多个步长增量;逗号运算符不要随便乱用,特殊简单出错;6、总结(5 分钟)争论、摸索题、作业:试验指导书习题参考资料(含参考书、文献等):叶斌 陈世强 . C 语言程序设计 . 北京:科学出版社授课类型:理论课.争论课试验课练习课其他 第 8 页,共 8 页 教学方式:传统授课.双语争论示教指导其他教学资源:多媒体模型实物挂图音像其他细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - -

    注意事项

    本文(2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开