免费预览已结束,剩余38页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2讲程序阅读技巧 多读 读好程序可以 提高对语法的记忆 理解和使用提高对常用算法的理解和使用提升程序设计和编程能力提高做题效率 如看程序写结果 程序填空 上机程序改错和程序填空 一 程序的一般阅读方法 1 随时记录变量值的变化情况对于数组 指针和函数参数最好辅以形象的示意图 步骤 从main 开始阅读每定义一个变量就记录其值及含义根据程序的执行流程 对变量值的变化随时记录更改直到main 结束 2 对于程序的执行流程要正确把握ifelse嵌套结构switch结构循环结构各种结构的嵌套 1 ifelse结构条件的正确解读 非0为真 0为假如x 5和x 5不一样x 0和x等价else和前面最近的未配对的if配对 例 有以下程序main inta 0 b 0 c 0 d 0 if a 1 b 1 c 2 elsed 3 printf d d d d n a b c d 程序输出A 0 1 2 0B 0 0 0 3C 1 1 2 0D 编译有错 2 switch结构根据整形表达式的值进行多分支选择case只起语句标号的作用 内部语句按顺序执行case不满足才看defaultcase语句和default语句顺序任意搭配break真正实现多分支 例 includemain ints scanf d 运行时 若输入123450 则输出结果是A 6566456B 66656C 66666D 66666560 3 循环结构循环要素 循环入口 循环条件 循环体和循环条件的改变 break和continue的含义循环的嵌套 例 若变量已正确定义 有以下程序段i 0 doprintf d i while i printf d n i 其输出结果是A 0 0B 0 1C 1 1D 程序进入无限循环 例 以下程序段中的变量已正确定义for i 0 i 4 i j for k 1 k 3 k printf 程序段的输出结果是A B C D 练习2011年3月一 20 有以下程序段inti n for i 0 i 8 i n rand 5 switch n case1 case3 printf d n n break case2 case4 printf d n n continue case0 exit 0 printf d n n 以下关于程序段执行情况的叙述 正确的是A for循环语句固定执行8次B 当产生的随机数n为4时结束循环操作C 当产生的随机数n为1和2时不做任何操作D 当产生的随机数n为0时结束程序运行 返回操作系统 产生随机数 rand 100结果是随机数除以100后所得的余数 即限定随机的范围是在0 99之间 使用rand 函数需添加头文件 include 1 rand 函数功能 是一个可以生成随机数的函数随机数 函数返回的随机数在0 RAND MAX 32767 之间 2 srand 函数功能 用来设置随机数的种子 一般与rand 结合使用 否则直接用rand 的话 每次运行程序的产生的随机数都相同 n rand 5 产生0 4的随机数 随机函数介绍 二 包含函数的程序阅读 1 函数调用的一般过程在发生函数调用时 函数中的变量 包括形参 并不占用内存 只有发生函数调用时 才分配内存单元 将实参的值传递给形参 类型不一致时 按形参类型自动强制转换 当执行return语句或函数执行完 函数调用返回 被调函数返回时 形参被撤消 不影响实参的值 includeintadd int int voidmain inta b c scanf d d inta b c 例值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d scanf d d 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d c add a b 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d intadd inti intj 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d 2 4 i j 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d i j 2 4 return i j 例5值参传递 3 5 函数值传递机制 includeintadd int int voidmain inta b c scanf d d i j 2 4 return i j 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d i j 8 2 4 c add a b 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d 8 c add a b 例5值参传递 函数值传递机制 includeintadd int int voidmain inta b c scanf d d 8 输出 c 8 printf c d n c 例5值参传递 函数值传递机制 2 指针作函数参数的用法形参指针变量实参是指针变量或地址修改形参并不能改变实参只能通过对形参指针的间接访问修改形参指针指向的对象 实现函数外变量值的修改 辅以变量示意图来理清变量值的变化 5 9 5 5 9 COPY includeswap intx inty inttemp temp x x y y temp voidmain inta b scanf d d 例 函数实现变量值交换 值传递 运行结果 5 9 swap int p1 int p2 intp p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 main 5 9 COPY 5 例 函数实现变量值交换 地址传递 运行结果 95 includevoidf intn int r if n 3 0 r n 3 elseif n 5 0 r n 5 voidmain intm 6 p 10 f m 例程序运行后的输出结果是 r 函数调用时 m到将值传递给n n定义为普通变量p将地址传递给r r定义为指针变量 函数调用 函数调用结束 2 7 函数调用结束 传值的m没有改变传地址的p在函数f中所作的改变保留了下来 r相当于直接对p操作 3 递归函数的调用过程函数的递归调用是嵌套调用的一种特例递归函数有3个要素递归形式 算法 递归条件 缩小问题规模 递归终止条件 基本情况 函数调用用栈管理 栈是先进后出的数据结构 函数调用时入栈操作 建立被调用函数的栈空间 保护调用函数运行状态和返回地址 传递参数 控制权交给被调用函数 函数返回时出栈操作 返回值保存在临时空间 恢复调用函数运行状态 释放栈空间 根据地址返回调用函数 函数嵌套调用 嵌套调用示例 main函数 调用a函数 结束 a函数 调用b函数 b函数 intfac intn intf if n 0 printf n 0 dataerror elseif n 0 n 1 f 1 elsef fac n 1 n return f 递归形式 递归终止条件基本情况 修改递归条件 fac 5 输出fac 5 main f fac 4 5 fac函数n 5 f fac 3 4 fac函数n 4 f fac 1 2 fac函数n 2 f fac 2 3 fac函数n 3 f 1 fac函数n 1 fac 1 1 fac 2 2 fac 3 6 fac 4 24 fac 5 120 120 例 2010年3月 例 反序输出正整数数字串 includevoidreverse intn printf d n 10 输出最右边一位数字 if n 10 0 reverse n 10 求商 递归 voidmain intk printf Inputaintegernumber 0 n scanf d 练习 有以下程序 includefun intx if x 2 0 fun x 2 printf d x main fun 7 printf n 程序运行后的输出结果是A 137B 731C 73D 37 三 字符串数组 1 字符数组与字符指针的区别charstr 10 hello c 0 c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 char str hello str charname 5 9 gain much stronger point bye char name 5 gain much stronger point bye 2 字符串数组的两种实现形式 二维数组存储空间固定字符指针数组相当于可变列长的二维数组 指针数组元素的作用相当于二维数组的行名但指针数组中元素是指针变量二维数组的行名是地址常量 练习 有以下程序fun charp 10 intn 0 i for i 0 i 7 i if p i 0 T n returnn main charstr 10 Mon Tue Wed Thu Fri Sat Sun printf d n fun str 程序执行后的输出结果是A 1NB 2C 3D 0 练习 有以下程序 includemain voidf charp 10 intn 字符串从小到大排序 chart 10 inti j for i 0 i0 strcpy t p i strcpy p i p j strcpy p j t main charp 5 10 abc aabdfg abbd dcdbe cd f p 5 printf d n strlen p 0 程序运行后的输出结果是A 2B 4C 6D 3 练习 有以下程序 includevoidfun char p p printf s n p main char a Morning Afternoon Evening Night fun a 程序的运行结果是A AfternoonB fternoonC MorningD orning 练习 有以下程序 includemain char a abcd ef gh ijk inti for i 0 i 4 i printf c a i 程序运行后的输出结果是A aegiB dfhkC dfhkD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玻璃破损赔偿协议书
- 搬运装卸承包协议书
- 日本足协留洋协议书
- 物品租赁协议书范本
- 拆迁审计顾问协议书
- 物资代采购合同范本
- 接送儿童安全协议书
- 最详细购销合同范本
- 用人协议书格式模板
- 浙江省温州市鹿城区2022-2023学年四年级上学期英语期末试卷(含答案)
- 2025年在线教育平台开发合同协议
- 2025河北邯郸市产业投资集团有限公司下属企业专业人才招聘78人笔试考试参考试题及答案解析
- 2025北京证券交易所全国中小企业股份转让系统有限责任公司校园招聘考试笔试备考题库及答案解析
- 2025年感动中国十大人物适用主题及素材运用励志学子庞众望:“个人选择与家国命运”作文导写高考语文作文热点新闻素材速记快用
- 2025年秋人教版小学五年级数学上册竞赛测试卷(含答案解析)
- 2025-2030中国液体化工期货交割仓库布局与运营模式报告
- 2025上半年幼儿教资笔试真题及答案,幼师资格证考试
- 2025年中国人形机器人行业发展研究报告
- (2025)党纪党规知识竞赛题库及答案
- 企业招聘计划与实施方案
- 第23课《富贵不能淫》课件 2025-2026学年统编版语文八年级上册
评论
0/150
提交评论