C语言 综合应用.ppt_第1页
C语言 综合应用.ppt_第2页
C语言 综合应用.ppt_第3页
C语言 综合应用.ppt_第4页
C语言 综合应用.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10讲综合应用 上周平台编程训练情况 练习完成情况 70个同学都完成练习 只有5个同学存在没有完成情况 问题汇总 QQ群 目前有54人参与 占70 平台发帖区 31个问题贴 其中我转帖qq问题的聊天记录21个帖子 希望大家去浏览帖子 分享解决程序问题过程和经验 数组名作参数和递归属于函数中的难点 问题1 includevoidmain inti a 10 n m max scanf d 用数组 建议输入和求最大值的处理分开 问题2 includevoidmain inti n t 1 floats 1 scanf d 为啥输出总是1 000000 问题3 floatjsave floata intk inti s 0 floatave for i 0 i k i s s a i ave s k return ave 为啥均值计算值有出入 问题4 includevoidmain intm i scanf d 为啥结果判断有错 7 变量的作用域 根据作用域的不同 可将程序中的变量分为局部变量和全局变量局部变量是在函数或分程序中说明的变量 只能在本函数或分程序的范围内使用 全局变量说明于所有函数之外 可以为本源程序文件中位于该全局变量说明之后的所有函数共同使用 全局变量可以在各个函数之间建立数据传输通道 但滥用会破坏程序的模块化结构 如出现同名变量 遵循 地方保护主义 原则 即从空间 全局变量应用实例 例8 11书179页有一个一维数组score 内放10个学生成绩 求平均成绩 如何得到多值 例如 最大 最小 平均值 例8 15有一个一维数组 内放 个学生成绩 写一个函数 求出平均分 最高分和最低分 includefloatMax Min 全局变量 voidmain floataverage floatarray intn floatave score 10 int for scanf ave average printf max 6 2f nmin 6 2f naverage 6 2f n Max Min ave floataverage floatarray intn 定义函数 形参为数组 int floataver sum array Max Min array for if array Max Max array elseif array Min Min array sum sum array aver return 运行情况如下 降低函数的通用性 因为函数在执行时要依赖于其所在的外部变量 如果将一个函数移到另一个文件中 还要将有关的外部变量及其值一起移过去 但若该外部变量与其他文件的变量同名时 就会出现问题 降低了程序的可靠性和通用性 建议 不必要时不要使用全局变量 原因如下 全局变量在程序的全部执行过程中都占用存储单元 而不是仅在需要时才开辟单元 使用全局变量过多 会降低程序的清晰性 在各个函数执行时都可能改变外部变量的值 程序容易出错 因此 要限制使用全局变量 一般把 程序中函数做成一个封闭体 除了通过 实参 形参 的渠道与外界发生联系外 没有其他渠道 例8 6外部变量与局部变量同名 includeinta 3 b 5 a b为外部变量 a b作用范围voidmain inta 8 a为局部变量 局部变量a作用范围printf d max a b 全局变量b的作用范围 max inta intb a b为局部变量 intc c a b a b 形参a b作用范围return c 运行结果为8 如出现同名变量 遵循 地方保护主义 原则 14 变量的生存期 根据生存期的不同 可将程序中的变量分为自动变量和静态变量自动变量 auto 的生存期是说明了自动变量的函数或分程序 它对存储空间的利用是动态的 其初值在每次为自动变量分配存储后都要重新设置 静态变量 static 的生存期就是整个程序的运行期 在程序开始运行前就为其分配相应的存储空间 在程序的整个运行期间一直占用 直到结束 即从时间 8 9 2auto变量 自动变量auto 不专门声明为static存储类别的局部变量都是动态分配存储空间 在调用该函数时系统会给它们分配存储空间 在函数调用结束时就自动释放这些存储空间 因此这类局部变量称为自动变量 函数中的形参和在函数中定义的变量 包括在复合语句中定义的变量 都属此类 自动变量用关键字auto作存储类别的声明 例如 int int 定义f函数 为形参 autoint 定义 为自动变量 8 9 3用static声明局部变量 当函数中的局部变量的值在函数调用结束后不消失而保留原值时 该变量称为静态局部变量 用关键字static进行声明 例8 7考察静态局部变量的值 includevoidmain int int int for printf int int autoint static return 对静态局部变量的说明 1 静态局部变量属于静态存储类别 在静态存储区内分配存储单元 在程序整个运行期间都不释放 而自动变量 即动态局部变量 属于动态存储类别 占动态存储区空间而不占静态存储区空间 函数调用结束后即释放 2 对静态局部变量是在编译时赋初值的 即只赋初值一次 在程序运行时它已有初值 以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值 3 如在定义局部变量时不赋初值的话 则对静态局部变量来说 编译时自动赋初值 对数值型变量 或空字符 对字符变量 而对自动变量来说 如果不赋初值则它的值是一个不确定的值 4 虽然静态局部变量在函数调用结束后仍然存在 但其他函数不能引用它 例8 8输出 到 的阶乘值 includevoidmain intfac int int for printf fac Intfac int staticint return 函数间的信息交换 调用函数和被调用函数之间的信息交换是通过参数的结合和return语句来实现的 数据流程是 在调用函数中 先给实参赋值通过函数调用 将数据从调用函数带到被调用函数形参带值后 被调用函数即可进行相应的数据处理如果有返回值 通过return语句带回到调用函数 本周编程训练 课堂课后练习 10 1统计字符个数 局部变量10 2统计字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论