ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:384.38KB ,
资源ID:3576920      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3576920.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何编写有多个返回值的C语言函数.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何编写有多个返回值的C语言函数.docx

1、如何编写有多个返回值的C语言函数如何编写有多个返回值的语言函数 摘要:本文从全局变量、数组指针、结构体三种途径深入探讨了如何实现有多个返回值的C语言函数。关键词本文来自:计算机毕业网 :函数;全局变量;数组;结构体1引言笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数。编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题。有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值;或者把需要返回多个值的一个函数分开几

2、个函数去实现多个值的返回。这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑,显然不理想。我们知道C语言函数的返回值是通过函数中的return语句来实现的,可是每调用一次函数,return语句只能返回一个值。那么当我们希望从一个函数中返回多个值时,用什么方法去实现比较合理呢?在教学过程中,我建议学生跳出对return语句的定势思维,一步步引导学生通过几种间接方式实现多个返回值的C语言函数。以下是笔者在教学过程中引导学生采用的三种不同方法编写多个返回值的C语言函数。2方法1:利用全局变量分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中

3、应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。实例1:编写函数求3个数中的最大值与最小值。方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:#include stdio

4、.h#include conio.hint max,min;/*定义两个全局变量用于保存函数返回值*/void max_min(int a,int b,int c) /*定义求最大最小值的函数*/max=min=a; /*初始化最大最小值*/ if(maxb)max=b; /*实现求最大值/最小值的函数并赋给全局变量*/ if(maxc)max=c; if(minb)min=b;if(minc)min=c;main()int x,y,z;printf( 请输入3个整数:n);scanf(%d,%d,%d,&x,&y,&z);max_min(x,y,z) ;/*调用求最大值与最小值的函数*/pr

5、intf(三个数中的最大值为:%d;最小值为:%d,max,min);/*输出最大值与最小值*/getch();调试结果如下:请输入3个整数:5,-6,2三个数中的最大值为:5;最小值为:-6注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用。3方法2:传递数组指针分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中

6、被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用

7、完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:#include stdio.h#include conio.hvoid max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/int *temp;/*用于交换位置*/*temp=*ptr;for(i=0;in;i+)if(*ptr*(ptr+i)/*最大值与第一个元素进行交换*/k=i;*temp=*ptr;*ptr=*(ptr+k);*(p

8、tr+k)=*temp ;if(*(ptr+n-1)*(ptr+i)/*最小值与最后一个元素进行交换*/j=i;*temp =*(ptr+n-1);*(ptr+n-1)=*(ptr+j);*(ptr+j)= *temp ;/*调用最大最小值函数*/main()int A6,i;for(i=0;i6;i+) scanf(%d,&Ai);max_min(A,6);printf(max=%d, min=%dn n,A0,A5);getch();调试结果如下:请输入6个整形数,以空格隔开:5 8 9 32 -6 4max=32,min=-6注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据

9、类型不一致时,不适用该方法。 4方法3:传递结构体指针分析:结构体作为教学中的一个难点,教材对它介绍的内容并不多,应用的实例更是少之又少,所以学生对于结构体普遍掌握情况不理想。其实,编写返回多个值的C语言函数,也可以考虑采用结构体的方式去实现。通过方法2,我们知道如果返回的数个数值的数据类型不一致,可以通过定义全局变量实现有多个返回值的C语言函数,也可以考虑把要求返回的数个值定义成一个结构体,然后同样以传递结构体指针方式把结构体的指针传递给形参结构体指针,那么函数中对形参结构体的修改即是对实参结构体的修改,函数被调用后获取的实参结构体成员即为函数的多个返回值,下面以实例演示该方法的应用。实例3

10、:编写一个用户自定义函数,允许用户录入学生的基本信息(包括学号、姓名、所属班级、总评成绩),并返回这些基本信息给主调函数。 方法:把学生基本信息定义成一个结构体,在用户自定义函数中传递该结构体的指针,则自定义函数中对结构体成员的录入操作即是对实参结构体成员的录入操作,从而实现多个返回值。参考代码如下:#include stdio.h#include conio.hstruct inf/*定义学生结构体,分别包含成员学号、姓名、班别、总评成绩*/ char xh12; char name20; char class15; int chj;main(void)struct inf a1; /*定义

11、学生结构体类型变量*/void xxxx(struct inf *ptr);printf(请输入学号,姓名,班别,总评成绩,以空格隔开:n) ;xxxx(&a1);/*调用函数,以学生结构体类型变量地址作为实参*/printf(学号:%s,姓名: %s,班别:%s,总评成绩:%d,a1.xh, a1.name,a1.class,a1.chj);getch();void xxxx(struct inf *ptr)/*该函数实现对结构体成员数据的录入操作*/ char xh112,name120,class115; int chj1;scanf(%s%s%s%d,xh1,name1,class1,

12、&chj1); strcpy(ptr-xh,xh1);strcpy(ptr-name,name1);strcpy(ptr-class,class1);ptr-chj=chj1; 调试结果如下:请输入学号,姓名,班别,总评成绩,以空格隔开:200102LiLi200185学号:200102,姓名: LiLi,班别:2001,总评成绩:85注意:当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法。5结束语对于以上这三种方法,如果想要返回的数个值数据类型一致,可以考虑采用方法2;而对于不同数据类型的返回值,如果各个数值之间是相互联系的,则方法3较为合适;方法1虽然在很多

13、情况下都可以实现多个返回值的C语言函数,但毕竟全局变量应用过程中有很多危险,要慎重使用。通过对以上几种方法的分析讲解,在教学过程中,学生再遇到这样的问题时,就能根据返回值的情况选择合适的途径去实现多个返回值的C语言函数。另外,如果再遇到类似的无法用教材知识点去直接解决的问题时,他们基本都能举一反三地尝试采用间接方式去解决。 参考文献1 谭浩强. C程序设计(第二版)M. 北京:清华大学出版社,1999.2 薛万鹏译. C程序设计教程M. 北京:机械工业出版社,2000.3 邓劲生译. Visual C+程序员实用大全M. 北京:中国水利水电出版社,2005. 1 摘要:本文根据笔者在计算机基础

14、教学中的一些探索和实践,从多样化教学、与其他中医课程的结合以及灵活的教学评价方式等方面探索了中医药院校计算机的教学工作。关键词本文来自:计算机毕业网 :中医药类院校;计算机教学;教学改革21世纪进入信息化时代,各个领域正日益受到新技术的冲击,科学技术迅猛发展造成信息量剧增,计算机应用能力已成为信息社会中的基本技能。如何提高高等中医院校学生的计算机应用水平,培养出具有时代竞争力的信息人才是当今社会的新要求,也是教学研究的重要课题。笔者结合近几年我校杏林学院的计算机教学现状以及教学改革实践,就以下几方面进行讨论。1教学现状及存在问题一部分学生在进入高等院校之前就已经掌握了计算机的基础知识,而对于某

15、些来自经济落后地区的学生,入学前可能没用过计算机,因此一个班里学生的计算机水平参差不齐,这就对高等中医院校计算机教学提出了新的要求。另外,计算机的发展十分惊人,学生大一学的知识到毕业可能就已经过时了。应如何适应时代的发展,是高等中医院校计算机教学需要讨论的问题。2教学改革实践中的重要问题2.1探索多样化教学模式在多媒体和网络技术的推动下,摆脱封闭式教学方法,探索多样化教学模式,才能使信息技术课丰富多彩。在教学中,我一般采用多种教学模式,收到了良好的教学效果。首先,采用多媒体演示。多媒体技术以其图文声像并茂的特点,形象生动地传递教学内容,把教学内容涉及到的事物、现象及过程再现于学生面前,让学生耳

16、闻目睹,产生身临其境之感,激发了学习的兴趣。某些知识借助于多媒体设备演示,教师做适当讲解,能使学生获得大量的感性知识,加深对知识的理解。例如,在讲授PowerPoint幻灯片制作时,我运用多媒体课堂教学软件,将操作过程演示给学生并适当讲解,使学生观看到了完整的操作过程,这样不仅易于传授内容,还能有效控制课堂进程,提高教学效率。同时,为了配合演示模式的教学,我还根据课程内容及学生接受能力,制作有针对性的课件,使课程内容生动形象,变难为易。其次,采用学生自学模式。学生要想熟练使用计算机,仅靠教师的讲授和演示是远远不够的,必须通过大量的实践练习才能掌握运用操作技能和技巧。练习的方式要多种多样,如课堂

17、问答、上机操作等。在进行上机操作练习时,一般由教师给学生布置有针对性的练习内容。例如,讲完Word后,提出排版要求,让学生课下每人准备一篇短文,课上用Word进行排版处理;讲完EXCEL后,让每位学生建立一个中药药物档案。如此,每完成一项教学内容,就及时让学生进行一定量的练习,有利于调动学生学习兴趣,熟练掌握所学内容,提高学习效果。2.2与其他中医药课程的整合高等中医院校计算机教学的最终目的是培养学生利用信息工具为专业服务,而这种能力的培养关键在于教师潜移默化地引导。利用信息技术学科的工具性特点,加强与其他学科的横向联系,不仅能使学生更扎实地掌握课堂所学内容,而且还能对信息技术课有更完整的认识

18、。随着计算机技术的发展,从新药品的仿真测试到计算机化培养皿中生长的数字生命形式,这是一种新的方法,不是基于直接的观察和实验,而是基于从真实空间向虚拟空间的映射。在这样一个伟大的时代,古老的中医学面临着前所未有的机遇和挑战。怎样将计算机科学与技术融入中医学领域,是一个值得深思和大胆尝试的问题。例如在中医学中五脏、六腑、气、血、津、液、经络、筋、脉、骨、髓等,都可以构成相对独立的对象。赋予每个对象适当的属性,对象具有智能性与自适应性,它们可以按照各自的属性做出决策,并随时准备根据接收到的新信息修改自身的行为规则,它们之间通过信息交换互相联系,构成一个复杂系统,这一复杂系统即人体。用计算机仿真学对中

19、医学中的概念、现象、原理、机制等进行模拟,可以建立各种模型,服务于教学、科研、临床。2.3激发学生对知识的自主性延伸在教学过程中,我发现许多学生不满足于书本上学到的内容,总是试图获得更多的信息知识。有的在课上经常打开其他应用软件并尝试着使用,还有的问我目前市场上流行的软硬件及趋势,这是学生对该学科具有强烈求知欲望的表现。为此,我们采取了以下两种途径:第一种途径是让学生围绕计算机相关话题进行讲演。丰富的信息科技知识是增强信息能力必不可少的条件,它不仅来源于书本,还来源于日常生活中知识的积累。由于接触环境不同,每位学生对书本之外的信息知识掌握程度不等,为了使更多的学生了解更广泛的信息知识,利用每次

20、课前一小段时间让学生围绕计算机相关话题进行讲演,目的是倡导学生之间进行“信息”交流,把自己了解到的最新的信息知识、市场动态讲出来,让大家来“共享”,或把自己遇到的某些问题提出来让大家一起讨论解决等。这同时也激发了学生学习的积极性。例如:有的学生介绍计算机的最新病毒,有的学生介绍怎样做个人主页等。通过这种方式,既锻炼了学生的语言表达能力,又可以把教材上没有介绍的前沿知识告诉给大家,不仅令学生信息知识面扩大,拓展了视野,而且激发了学生不断主动去探寻更多信息知识的动力。第二种途径是创设第二课堂。为了满足一部分学生想深入学生信息技术知识的要求,我开设了第二课堂,按学习内容不同分为两个活动小组:(1)程

21、序语言设计(2)应用软件使用。学生根据兴趣要求不同进行选学。经过一段时期的学习,有些学生已能编写VFP或VB语言程序,有些学生对个别应用软件的使用达到了较高的水平,并利用所学帮助其他学科教师制作考试系统,受到了一致好评。2.4采取灵活多样的教学评价方式现在我们一般不采用传统的考试方式来评价学生对知识掌握程度的高低。考核时采取“模块化”、“任务式”的办法,根据所学内容不同采取不同的评价方式。一般所给题目应满足如下要求:一要有适当难度;二要在每次考核中,每项任务应有简单的基本要求,让学生明确任务,但不要干涉学生的思路,留给学生足够的想象空间和创新空间;三要能培养与训练学生的实践能力和应用能力。例如

22、,在学完Word软件后,采取了指定内容、单人考核的方法,由教师提出具体考试要求并限时完成。要求每位学生用Word软件打印一篇文章,限定排版要求,尽量在测试要求中包括Word中学过的大部分文字处理功能,完成后由教师当堂打分。在学完PowerPoint软件后,采取了作品展示、他人评价的方式,当学生完成作品时,要求部分学生向全班展示他的作品,并讲述该作品的意图、制作过程等,让其他学生给予评价,教师适当地加以引导。总之,高等中医院校计算机教学中还有许多问题需要讨论和探索。但只要我们遵循教育规律,把握信息时代教育观念,在实践中不断探索新的教学模式、教学方法,就一定能培养出赋有时代竞争力的信息人才。收稿时

23、间:2010-2-25 笔者通过近几年来在多媒体技术领域的教学和科研,并对国内高校多媒体技术课程教学现状作了认真思考,在此基础上,对笔者已出版的本课程教材进行了改版,由清华大学出版社出版了多媒体技术基础(第3版)、多媒体技术教程和与这两种教材配套使用的多媒体技术课程设计和学习辅导。下面对这几种教材和笔者在教学中的一些经验和体会与同行作一个简要的交流。另外,在多年的科研和教学工作中,笔者深感专业技术术语的定名和理解的重要性,因此在本文最后再简要介绍笔者最新修订完成的英汉多媒体技术辞典(第2版)所做的一些工作和努力。1多媒体技术基础第3版多媒体技术基础第1版于1998年定稿2000年8月出版,第2

24、版于2001年定稿,2002年9月出版,共印刷20次,曾被评为“2003年度全国优秀畅销图书(科技类)”,2005年评为“北京高等教育精品教材”。多媒体技术基础(第3版)被列选为“普通高等教育十一五国家级规划教材”,现已由清华大学出版社出版发行(ISBN 9787-302-17780-7)。多媒体技术基础第2版在2001年定稿时,许多新技术还没有出现或正在开发之中,如MPEG-4AVC/H.264(2003年)和XML 1.1(2006年);有些当时认为比较有前途的技术,现在已有更新的技术,如普遍认为2002年公布的SIP(RFC 3261)比1 996年公布的H.323更简单。根据笔者近几年

25、的科研、教学和观察,教材中的大部分内容都适合当前使用,因此确定第3版教材的修改方针是保留第2版的体系结构,更新部分章节内容并增加新内容。1.1教材的组织结构为保持多媒体技术基础教材内容的完整性,第3版教材仍由多媒体压缩编码、多媒体存储、多媒体传输和多媒体内容处理语言共四个相对独立的部分组成:(1)多媒体压缩编码(第213章),主要介绍声音、图像和数字电视的基本知识、压缩与编码方法;(2)多媒体存储(第1416章),主要介绍CD,DVD,HD-DVD和BD(Blu-ray Disc)光盘的存储原理和多媒体在光盘上的存放格式;(3)多媒体传输(第1720章),主要介绍多媒体网络应用、服务质量(Qo

26、S)、因特网、TCP/IP协议和多媒体传输的基础知识;(4)多媒体内容处理语言(第2122章),主要介绍HTML和XML的基础知识。为帮助读者加深对基础知识的理解,每章后面都有练习和思考题,另有参考答案,可在网站http:/每章后面都有参考文献和站点,列出它们有两个目的:(1)表示在编写本教材过程中访问过这些站点,参考或引用了它们的内容;(2)更重要的是为读者提供进一步学习的指南,教师要鼓励学生主动上网查阅。虽然到本书截稿时每个网址都有效,但以后可能会有变化。1.2教材修改的内容在第2版教材基础上,第3版教材作了如下修改:(1)考虑到视像压缩技术在多媒体产品和各种服务中的重要性,因此增加了一章

27、专门用来介绍MPEG-4AVC/H.264。此外,考虑到光盘存储器在多媒体存储方面的重要性,因此增加了HD DVD和Blu-ray Disc的内容。(2)考虑到网上多媒体应用如火如荼,如IP电视、IP电话、即时通信和多媒体会议,因此重写了第三部分(第1720章),突出了多媒体传输或称多媒体通信技术。(3)考虑到20世纪90年代末期开展的内容处理已成重要的研究方向,因此在第22章(XML语言)中增加了XML新版本的内容。HTML和XML等标准已经并将继续对日益增长的包括移动通信在内的多媒体网络应用和多媒体电子出版业等行业产生深远的影响。(4)为降低教材篇幅,第2版中的部分内容没有保留,如MIDI

28、系统。(5)XHTML是用XML重写的HTML版本,2008年1月介绍的HTML5(也称XHTML 5)也是用XML编写的。因此本版教材没有保留第2版中的第23章(XHML语言)。1.3教材的使用建议国内许多大学开设多媒体技术课程已有多年,在网上看到许多兄弟院校在教材建设和课程教学方面已有很多很好的经验,在学习和借鉴他们成功经验的基础上,为使用或打算使用本教材的老师和同学提出如下建议供参考。(1)有所教有所不教在编写本教材过程中笔者注意到,国外有些信息技术学院从入大学到研究生毕业,每个年级都开设内容不同、深浅不同的多媒体课程,既有广度又有深度。考虑到我们目前的多媒体课程教学计划只安排一个学期,学时也不多,因此教师可采用有所教有所不教和有所学有所不学的策略。任课教师可根据自己的兴趣和专长、学生已有的基础和专业方向,有的放矢地选择其中的部分内容。对于不作为重点的教学内容,如果有需要,学生自己就会主动去钻研。(2)教材作为参考书对于信息技术课程的教材来说,写进书面教材的内容通常是比较成熟的,即使刚刚出版的教材,其内容也不见得新。据我观察,许多大学的多媒体课程内容是当前最新的技术,教师都有自己编写的教学提纲和材料,而把正式出版的教科书列为必要

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1