- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
例:一个简单的学生成绩档案管理系统问题描述:完成一个综合的学生成绩档案管理系统,要求能够管理若干个学生的几门课的成绩,需要实现以下功能:读入学生信息、以数据文件的形式存储学生信息;可以增加、修改、删除学生的信息;按学号、姓名、名次查询学生信息;可以依学号顺序浏览学生信息;可以统计每门课的最高分、最低分以及平均分;计算每个学生的总分并排名分成5大模块,各大模块又可以分几个小模块:练习:定义一个函数,实现画出一条由n个‘-’组成的横线定义一个函数,实现画出n个由字符c组成的横线intmain(){ …… if(JudgePrime(m)) printf(%disaprime!\n,m); else printf(%disnotaprime!\n,m); …… }函数原型原型声明形式:函数返回类型函数名([形式参数表]);几点说明:(1)分号:原型声明最后的分号一定要有(2)形式参数表:形参变量名可以省略,形参类型一定要保留(3)声明位置:可以在程序的预处理指令之后第一个函数定义之前(建议这种),或者在主调用函数的调用点之前函数功能:求两数的最大公约数intgcd(intm,intn){ intr;do{r=m%n; m=n; n=r; }while(r);returnm;}*5.6变量的作用域与存储类型变量有存储类型和数据类型两个属性,因此,变量的完整定义格式是:[存储类型关键字]变量类型名变量名1[,变量名2,......变量名n];其中缺省的存储类型关键字为auto用auto定义自动变量函数内:自动局部变量,在程序运行进入函数体或语句块时自动获得内存空间,退出时不再占空间函数外:自动全局变量,编译时在静态存储区获得空间并自动初始化为0,程序结束时不再占空间*5.6变量的作用域与存储类型用static定义静态变量格式:static变量类型名变量名1[,变量名2,......变量名n];特点:编译时自动获得内存空间,直至程序运行结束空间才被回收,但是并非在生命期内的任何时刻都有作用域,有时呈“休眠”状态函数内:静态局部变量,在函数被调用时起作用,函数调用结束之后休眠至下一次调用时继续作用函数外:静态全局变量,仅在程序的当前文件中起作用,具体到第9章中介绍初始化只发生在第一次函数被调用时*5.6变量的作用域与存储类型例5.10利用静态局部变量求解从1到5的阶乘#includestdio.hintfun(intn){ staticintf=1;/*定义静态局部变量f*/f=f*n;/*求n的阶乘f*/ returnf;/*返回阶乘值*/}intmain(){inti;/*定义局部变量i*/ for(i=1;i=5;i++)/*循环,依次求1到5的阶乘*/ printf(“%d!=%d\n,i,fun(i)); return0;}在编程环境下演示,跟踪主要变量*5.6变量的作用域与存储类型静态局部变量的特点(1)静态局部变量在编译阶段就在静态存储区分配了存储空间,并且一直占用到程序结束。(2)静态局部变量其定义位置在函数内部,仍然是局部变量,所以其作用域仅限于本函数,仅在本函数被调用时才能被访问。(3)静态局部变量只在第一次进入函数时被初始化,若未指定初值,将自动初始化为0。(4)在第二次及以后进入函数时,静态局部变量不再初始化,而是从“休眠”状态“苏醒”,在原有基础上继续变化。每次退出函数时就进入“休眠”状态*5.6变量的作用域与存储类型例5.10的思考题:(1)如果将函数fun中的staticintf=1;改为intf=1;,重新运行程序,结果是?请解释原因;(2)如果将main函数中的循环for(i=1;i=5;i++)改为for(i=3;i=5;i++),f恢复成静态局部变量,那么输出结果是3到5的正确阶乘吗?请解释原因;(3)如果将如果将main函数中的循环f
文档评论(0)