c语言函数范文
时间:2023-03-16 18:55:47
导语:如何才能写好一篇c语言函数,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
一、函数的概念函数是一组语句,这组语句可以完成一个独立的操作,这组语句有一个简短的名字,程序员可以仅仅利用这个名字完成某个操作。函数的使用,使复杂的程序变得简单化、条理化、清晰化。在C语言中函数分为两大类:库函数、用户自定义函数。
1、库函数在编写程序的过程中往往有一些操作需要频繁的使用,并且这些操作的代码实现又有一定的难度。比如数据的输入、输出。在C语言中是没有输入输出语句的,由于输入输出涉及到多计算机硬件的直接操作,对用户来说较困难。这些操作往往由编译系统的开发商提供给用户。它们都是以独立程序块的模式出现,并且存在于编译系统的某个文件中,这就是库函数。比如printf(),scanf()。它们是由编译程序根据一般用户的需要编制并提供给用户使用的一组程序代码。C语言的库函数极大地方便了用户,同时也补充了C语言本身的不足。事实上,在编写C语言程序时,应当尽可能多地使用库函数,这样既可以提高程序的运行效率,又可以提高编程的质量。
2、用户自定义函数用户自定义函数顾名思义就是用户自己定义的函数。程序的编写过程其实就是一个个函数的定义过程。很多情况下,C语言的编译系统提供给我们的函数并不能满足用户的要求,这就要求用户自己编写函数。函数是由一组语句组成,并给定一个名字。相应的函数的定义一般可分为两大部分:函数头部的定义、函数体的定义。形式如下:函数的类型函数名(函数的参数){函数体;}上面大括号上边的一行成为函数的头部(首部),它给出了函数的表面信息:函数返回值的类型,函数的名字,函数要处理的数据;大括号内的语句描述了函数的内在构造,这组语句完成一个独立的操作,是对函数能够完成功能的具体描述。
3、函数的调用函数是由一组语句组成,并给定一个名字。执行与函数相关的一组语句的行为称为函数的调用。应该说函数定义好之后调用之前是没有什么意义的。函数就像某个具有特殊功能的机器工具。这些机器只有在开关打开之后才能发挥作用。在程序编写过程中,完成“开关机器”这个操作的就是函数调用。函数调用的一般形式:函数名(实际参数);
二、函数的教学C语言函数的教学主要是学习自定义函数以及库函数的使用。
篇2
关键词:模块化程序设计;函数调用;嵌套;递归
0 引言
程序调用是指当前正在执行的程序(又称调用程序)中出现了调用其它程序的语句,使得程序的执行转移到另一个程序段(又称为被调用程序)中,同时保存必要的信息,以便在被调用程序执行结束后恢复执行调用程序的过程。在C/C++语言中,称程序调用为函数调用。当在一个函数中出现了函数名时,就发生了函数调用。在C/C++语言中,有以下两种函数调用方式:
(1)函数调用以一个语句的形式出现,这时被调用函数可以没有返回值(函数类型可以设置为void类型);
(2)以表达式中的一个项的形式出现,被调用函数必须有一个明确的返回值。
按照函数调用的性质的不同,函数调用又分为两类:函数嵌套调用和函数递归调用。以下就嵌套调用与递归调用概念进行一些说明。
1 存在问题和解决办法
C语言函数的定义都是独立的,互不包含。换句话来说,一个函数内不能包含对另一个函数的定义。
嵌套调用。C语言不能嵌套定义函数,但可以嵌套调用(nested calling)函数。嵌套调用过程如图1所示。
图1 C语言函数嵌套调用过程
递归调用。在调用一个函数的过程中出现了直接或间接地调用该函数本身,称为函数的递归调用。换句话说,当一个程序调用它自身时就发生了递归(recursive calling)。C/C++语言的特点之一就在于允许函数的递归调用,如图2所示。
递归算法的实质是将原来的问题分解为新的问题,而对新的问题又用到了原有问题的解法。按照这一原则分解下去,每次出现的新问题是原有问题的简化子集,而最终分解出来的问题,是一个已知解的问题(即调用至满足调用终止条件,得到一个可用的基础值),这便是有限的递归调用。只有有限的递归调用才是有意义的;无限的递归调用永远得不到解,没有实际意义。
图2 函数的递归调用过程
递归的过程有两个阶段:
第一阶段,递推。将原有的问题不断分解为新的子问题,逐渐从未知向已知推进,直到推进至满足调用终止条件,得到一个可用的基础值。
第二阶段,回归。从基础值出发,按照递推的逆过程,逐一求值回归,最后到达递推的开始处,结束递归调用。
2 函数嵌套调用与递归调用实例分析
现各举一个嵌套调用和递归调用的小程序,以说明上面的理解(为了表明C++也支持嵌套调用和递归调用,以下程序用C++语言编写)。
例1:输入两个整数,求它们和的平方。
分析:为了说明函数的嵌套调用,针对该问题可以设计两个函数,求平方的函数SQU及求另一个整数平方和的函数SUM。由主函数调用SQU,SQU又调用SUM(见图3)。
图3 函数的嵌套调用和递归调用
假设求平方的函数为为a,求整数平方和的函数为b,程序
如下(Source Code):
//
//nestf.cpp
//The C++program illustrates nested functiOn calling.
//CaIculation of the quadratic sum of two Integers.
//
#incIude<iOstream.h>
Vo|d math(void)
{int m,n;
int a(int x,inl y);//function prolotype
COUl<<"pIease enter two jntegers:"<<endI;
cin>>m>>n;
COUt<<“the quadratic sum of m and n is"<<a(m,n)<<endl;
//calIing function
}
int a(int x,int y) //function decIaration
{int b(int m);//function prototype
return(b(x)+b(y));
//calling nested functiOn and function retum
}
int b(int k)//function declaration
{reIum(k*k);)//funclion return
例2:求n!
分析:根据
程序流程:
图4 程序流程
以下以6 1为例:
我们可以进行以下分析:
6!=6*5!5!=5*4!4!=4*3!3!=3*2!2!=2*1!1!=1*0!0!=1
未知――――――(递推)――――――――――已知
6!=6*5!=7205=5*4!=1204!=4×3!=243!=3*2!=62!=21!=1*0!=10!=1
未知――――――(回归)―――――――――已知
Source Code:
//
//factof.cpp
//A C++program illustrating recursiVe functiOn caIIs.
//CaIcuIating the factorial of a number.
//ExamDIe:6!=6*5*4*3*2*1=720
//
#incIude<iOstream.h>
long flactof(int n)//funclion declaration
{long a;
if(n<0)
count<<"The integer(n)which you entered must be
greater than or equal to zero!"<<endI;
eIse if(n==0)a=1;//the basic condition to terminale
eIse a=facfof(n-1)*n;//iterating
retum(a);
}
void main()
{long faclof(inI n);//funclion procotype
int b=6;
long y;
y=factof(b);//recursiVe calling
COUl<<"6!="<<y<<endl;
}
3 结束语
嵌套调用是将功能独立的函数有机地结合起来,完成一项任务。采用嵌套调用,提高了程序的可读性、可维护性和可扩充性。而采用递归调用允许某些算法用简单的小例程来实现,但不能保证速度或效率。递归使用不当会导致程序在执行过程中耗尽空间(因为在递归调用时必然要一次次生成新的同名局部变量,并动态地为其分配存储单元),从而引起程序(有时是整个系统)崩溃。
篇3
关键词:函数教学;函数定义;调用;声明
中图分类号:TP312.1-4 文献标识码:A文章编号:1007-9599(2011)24-0000-01
Function Teaching Talking in C Language
He Lixia
(Hubei Jingzhou Yangtze University College of Computer Science, Jingzhou434023,China)
Abstract:The C program is composed of functions, using functions can improve programming efficiency,so learning functions is very important to the C language program understanding and grasping,according to years of teaching practice,being guided teaching by the cases has played a good effect.
Keywords:Function teaching;Function definition;Call;Statement
一、引言
C语言是一种结构化程序设计语言,结构化程序设计是以模块化设计为中心,就是将―个大的计算任务划分为一个个比较小的任务,这些小任务均由函数来完成,因此对于函数这章掌握的好坏直接关系C语言进一步的学习,本人从事C语言教学多年,总结多年的教学经验,在此对函数教学的体会进行交流探讨。
二、函数的三要素
虽然C语言提供了丰富的库函数,但不可能满足每个用户的各种特殊需要,因此大量的函数必须由用户自己来编写,如何编写,并且很好地应用,就必须掌握函数的三要素----定义、调用和声明函数。
(一)如何定义函数。定义函数是重点,也是学生学习起来的难点,首先来看看函数定义的一般形式:函数类型函数名(形参类型说明表)
{
说明部分
语句部分
}
自己定义函数时,必须想清楚两点,第一是否有返回值;第二是否有形参。
下面通过一个例子展示一下如何来定义函数:
例:编写一个函数实现两个正数的最大公约数
第一种情况:有返回值
有参数,有两个整型形参
定义如下:
int gys1(int a ,int b)
{intm; m=a=1;m- -) if(a%m==0&&b%m==0)return m; //返回值的类型最好和函数类型一致
}
第二种情况:不需要返回值
有参数,同样是两个整型形参
void gys2(int a,int b) //void表示无类型,即不需要返回值
{int m; m = a=1;m- -) if(a%m==0&&b%m==0)printf("%d",m);
}
(二)调用函数
函数定义之后,是为了被调用,同样以上面的程序为例,展示下如何在主调函数中调用以上两个函数:
第一个情况被调用说明:
main()
{
int m,n; scanf("%d%d",&m,&n);printf("%d是最大公约数",gys1(m,n));
}
以上两种情况,调用语句用斜体表示!
第二个情况被调用说明:
main()
{
int m,n; scanf("%d%d",&m,&n);gys2(m,n);
}
(三)函数的声明
函数定义后,为了正确调用,要养成声明函数的习惯,以免出错,对于自己的定义的函数,函数声明如下:
函数类型函数名(形参类型[形参名],….. ); [形参名]表示可选,以上面的函数为例,
第一种情况的声明为:int gys1(int a,int b);或int gys1(int ,int);
第二种情况的声明为:void gys2(int a,int b);或void gys2(int , int );
三、函数的值传递
(一)基本概念。在进行参数传递的过程中,必须掌握形参与实参的概念:形式参数:定义函数时函数名后面括号中的变量名。实际参数:调用函数时函数名后面括号中的表达式。(二)单向值传递。当函数的形参和实参都是简单变量时,实参向形参传递数据是一种单向值传递,实参的值传递给对应的形参,但是形参的值不会回传给实参。(三)地址值传递。当函数的形参和实参是数组名或指针的时候,这个时候实参传递的是数组的首地址或指针指向变量的首地址,当把实参传递过去时,由于形参也代表首地址,这样实参和形参的首地址相同,即实参和形参占用相同的存储空间,这样一种传递称为地址值传递。
四、结束
函数的三要素和函数的值传递是C语言函数中基础也是很重要的内容,只有在掌握以上内容的基础上才能更好地学习后期知识,经过这么多年的实践教学,通过这种案例为引导的方式教学起到较好的效果!
参考文献:
[1]何光明.杨静宇.C语言程序与应用开发.北京:清华大学出版社,2006
篇4
关键词:C++语言程序设计;函数指针;分析研究
中图分类号:TP311.11 文献标识码:A文章编号:1007-9599 (2011) 24-0000-01
Analysis and Research of Function Pointers for C++ Language Programming
Zhang Suxia
(Shandong Rural Credit Cooperatives,Qingdao266550,China)
Abstract:Pointer as C++ language programming is an important concept,its application is the C++ Programming Language is very important content.Pointer as a special type of data structure,which can effectively express complex data between the logical structure of the relationship.Flexible and correctly use the pointer to the design of the program with a lot of convenience,the application of which the most significant effect is a function pointer,by using the function pointer,you can call the function can get multiple return values,and to deal directly with memory addresses and so on.This article from the introduction of C++ language program design,function pointer to talk about,and then a detailed description of the use of C++ language program design function pointers need to pay attention to the,the final C++ language program design,function pointers application techniques carried out a systematic analysis.
Keywords:C++ Language Programming;Function pointer;Analysis
一、认识C++语言程序设计中的函数指针
(一)指针与函数。在C++语言程序设计中,将指针与函数结合在一起使用具有非常丰富的内涵。比如说,可以把指针作为函数的参数来使用,也可以把指针作为函数的返回值,另外,指针可以指向函数成为函数指针等。在C++语言程序设计中,用指针作函数的参数,从而实现地址传参的调用。而所谓的调用就是系统自动将实参地址的值赋给其所对应的形参指针,从而使形参指针指向实际参数变量。这样一来,形参在函数体内的变化,将会直接影响到调用函数中与之对应的实参的值。
(二)区别指针函数与函数指针的概念。由于函数的类型是按照函数返回值的类型来定义的,所以把返回值为指针类型的函数称为指针函数。其中需要说明的是如果使用某变量的地址来充当函数的返回值的话,还需要考虑地址所对应的变量空间是否还在被占用,若地址空间已经被释放掉,那么其中的数据就有可能发生了变化,这样的话就需要将相应的变量设置为静态变量,否则的话,就不能实现正确传递参数的效果。还有一点要说明的就是在使用指针函数时,必须把接收函数值的变量设置为指针,而且其数据类型必须与返回值的数据类型相同。
由于指针变量不仅可以指向不同的数据类型,同时还可以指向函数,其中把指向函数入口地址的指针称为函数指针。函数指针作为C++语言程序设计中函数与指针结合应用的一个重要概念,函数指针的作用就是用来在函数间进行函数参数的传递。
在C++语言程序设计中常常会把指针函数与函数指针两个概念混淆起来,实际上,明白二者的实质后,二者完全是两个不同的概念,其最为显著的区别就在于函数指针中的指针是指向函数入口的,而指针函数中的指针是指向函数出口的,所以在使用时一定要把握好二者的区别,正确使用。
二、使用C++语言程序设计函数指针需要注意的问题
尽管函数指针的使用可以为程序设计带来很多的方便,但是由于指针变量自身存在的缺陷,所以在使用中如果不小心的话就会出现错误,严重的话就可能导致系统的崩溃,所以这里有必要就C++语言程序设计函数指针应用中经常出现的问题进行说明。
第一、指针变量初始值的赋值问题。尽管指针变量是指向的是相应数据变量的存储地址,但是在使用该指针变量前必须对指针变量的初值进行赋值,如果不对其赋值的话,系统就会随机对其进行赋值,显然,这就会导致比较严重的错误。
第二、指针变量所指对象的存储单元单元分配问题。在对指针变量所指的对象进行赋值时需要为其所指的对象分配充足的存储单元,如果存储单元分配不足的话也将会发生一系列的错误。
第三、在操作前不对指针的值是否为空就进行操作的问题。对于一个值为空的,它的值为空的指针类型变量而言,它是不指向任何变量的,如果强制对它进行操作的话,就可能会出现如下的几种情况:一是禁止读写;二是只允许读而不允许写;三是既允许读又允许写的三种不合法的存储区域赋值问题,显然,这一问题所造成的错误势必会非常严重。
第四、函数按地址引用时参数的误用问题。函数参数的引用包括按值引用和按地址引用两种不同的引用方式,其中按值引用的是数值而按地址引用的是地址,二者是不一样的,一定要区分开来,不能混淆。
三、C++语言程序设计中函数指针的应用技巧分析
函数指针作为一种具有特殊用途的指针,它广泛的应用于C++语言程序设计中。其中C++语言程序设计中的函数指针主要用于调用函数以及充当函数的参数这两个方面。而C++语言程序设计中函数指针的应用是有技巧的,其使用技巧如下:
第一、多态机制的实现。在C++语言程序设计中使用函数指针来实现多态机制是比较复杂的,其中主要是通过虚函数表来实现的,其中虚函数表中存放的就是由函数指针组成的数组,由这些函数指针来指向实际所要调用的函数。
第二、回调函数。所谓的回调函数可以这样的来理解,如果把某个函数的指针作为参数将其传递给另一个函数时,当这个指针用来指向函数时,就是回调函数。在C++语言程序设计中回调函数应用的比较广泛,举个例子,譬如Win32程序设计中的WinProc其实就是一种回调函数,它主要是用来处理窗口的相关消息。
第三、取代分支语句。分支语句在程序维护上往往具有一定的限制,然而函数指针的应用可以很好的解决这一问题。
参考文献:
[1]张海平.C/C++语言中函数指针的深入分析与应用[J].软件开发与设计,2009(22)
篇5
经济学是处理资源配置、解决资源稀缺性和需求的学间,而农业经济学也是在解决如何更合理更有效的配置农业资源、要素、取得更大农业产值,满足消费者需求的间题。互联网+农业也是在传统农业和农业经济理论的基础上,结合新的要素和互联网经济的营销演化出的新的农业经济模式。
1 传统农业
传统农业被认为低效,但在舒尔茨的《改造传统农业》一书中,传统农业是被认为要素是被充分配置了的,制约其进一步发展的是资本的不足和现代技术使用的欠缺,以及销售渠道的不通畅和抽成。农业的获利空间和发展被压制了,体现在农村劳动力的外流和农产品的原料化,与市场的脱节。由于这类原因,农业产品多根据生产者自己的少量信息与主观判断实施自己的生产计划,结果只能取得市场的平均收益,这种局面容易往复循环,风险来临时没有防范能力,再次返贫,影响农业农村发展。
2 互联网农业及现状
互联网推动农产品销售模式升级,农业生产的附加值有效提高,传统农业的发展模式进一步深度改造,主要表现在以下几个方面:(1)推进农业生产的标准化;(2)使营销人口变得便利与高效;(3)突出了安全健康的农产品品牌形象;(4)优化提升了农村的金融服务水平。
中国目前全国涉农电子商务平台已超3万家,农产品电商平台已有3000家。2013年底截止,中国农村地区网民数达1.77亿,相比2012年增长2101万人,增长率13.5%。预计2015年底时,我国互联网总人口会突破7亿,比例近500Io,农村市场占260Io。大规模的农村网民数量将为互联网农业的发展和普及提供保障。
二、相关理论依据
1 微观经济学理论依据
蛛网效应的迟滞作用。一般来说,农业在生产形式和生产组织上给人的印象往往是低效、松散和落后的。依靠荒地的开垦和增加人力的投人来实现产量的增长,而在市场这端,由于销路的不畅,生产个体的孤立,收购商的强势压价,很难取得高收益,而且由于蛛网效应,价格反馈的迟滞,往往会出现需求和供应的脱节。从互联网+农业很多取得较好收益的产品来看,不仅通过大数据和云计算、线上线下分析消解了蛛网效应,而且新的产品及业态能够满足消费者心理和为他们提供更好的服务价值,即抓住消费者偏好这一因素,使得生产者获得了高出甚至远高于平均收益的溢价。
2 C-D生产函数(柯布道格拉斯模型)的变型
篇6
关键词:农业要素集中化;规模经济;C-D生产函数
一、研究背景和理论基础
(一)农业要素集中化提出符合时代要求
以家庭承包经营为基础、统分结合的双层经营体制,农业发展从此走上快车道。经过了30年的推广和实施,其弊端日益显露。因此在农村社会主义市场经济不断扩展的新形势下,这种体制越来越不能适应我们整个国民经济的发展,新的体制呼之欲出。
而其根源在于现有体制下,本来有限的农业生产要素不能很好地集中起来,发挥规模效应,不能更进一步挖掘农业生产潜力。
(二)农业要素集中化所带来的规模经济的经济学理论基础
目前经济学领域关于规模经济推动农业发展主要集中在以下两个理论,一是马克思关于农业大生产、小生产问题的基本论述,即小农生产方式是落后的,归结起来,是注定要灭亡的;农业生产中的大生产优于小生产,并将排挤和取代小生产。二是西方经济学中马歇尔和保罗・A・萨缪尔森关于规模经济理论,其中马歇尔在《经济学原理》一书谈到“大规模生产的利益在工业上表现得最为清楚;大工厂的利益在于:专门机构的使用与改革、采购与销售、专门技术和经营管理工作的进一步划分”。并且马歇尔还论述了规模经济形成的两种途径,即依赖于个别企业对资源的充分有效利用、组织和经营效率的提高而形成的“内部规模经济”和依赖于多个企业之间因合理的分工与联合、合理的地区布局等所形成的“外部规模经济”。
因此我们有理由,相信如果在农业生产经营中把劳动力、市场、土地、技术、资本等要素的集中化,可以产生农业大规模生产的经济性;通过要素集中,可以实现某一农业生产单位的“内部规模经济”和一个大规模的农业地区的“外部规模经济”。
二、C-D生产函数模型及其应用
本文将借用C-D生产函数建立计量模型,力求从客观和科学角度论证该结论,并且结合河南商丘市的农业调研数据进一步说明农业要素集中化的可能性和必要性。
(一)模型建模思路及其形式
基于用定量的方法分析农业要素集中化所带来的规模经济效益的可能性,通过收集的时间序列数据来,建立合适的生产函数模型,用数学公式对现实发生的生产过程的投入要素与产出量之间的技术关系进行拟合。
我们采选的是关于生产函数模型中的多要素C-D模型(生产函数的概念首先由美国数学家Charles Cobb和经济学家Paul Dauglass于1928年提出),模型假设劳动Lab,资本K,技术A,土地L,则产出Y与以上的各类要素的组合关系可以用如下形式的模型描述:Y=ALabLKKLT,根据要素的产出弹性的定义,可以推出E■=■・■=Al Lab■K■L■■=l,E■=■・■=k,E■=■・■=t,即参数l,k,t分别是劳动,资本,土地的产出弹性,那么有产出弹性的经济含义,应该有0≤l≤1,0≤k≤1,0≤t≤1,在其中如果l+k+t显著接近1,即参数满足近似一阶齐次性,也就是认为农业生产过程中呈现规模报酬不变的状态,因为A(λK)K(λLab)L(λL)T=Aλl+k+tLabLKKLT=λALabLKKLT即当资本,劳动,土地的数量同时增加λ倍,产出量也增加λ倍;同理如果l+k+t显著小于1,认为农业生产过程中呈现规模报酬递减的状态;反之,则可以认为农业生产过程中呈现规模报酬递增的状态。
(二)C-D生产函数模型应用于商丘市农业要素集中化的实证检验
1、检验对象。商丘市是国家著名的农副产品生产基地和新兴工业城市,被国务院定为“全国农村流通体制改革试验区”、“全国综合配套改革试点城市”,并成为河南省三大经济技术开发区之一,因此笔者选择商丘市作为此次实证检验的对象。
2、检验步骤。由于原始数据比较冗杂,本文将采用统一单位、等权加权的方法,即对于同一类型的不同单位的数据,统一换算。如这次对农业资本的加总过程中,我们通过查询国家的相关规定,将农村用电量(0.6元/每千瓦时),机电灌溉面积(国家规定农业机电灌溉投入为2元/亩)等原始数据经过处理后换算成具体金额,而农业机械等数据则是在咨询商丘市农业局相关人员的前提下,耕作机械按5000元/台,每台扣除700元的国家财政补贴,收割机械则按15000元/台记入资产总额中,最后关于资产投入总额的计算则采用农机,农业基础设施,政府农业投资3部分等权加权的方法计算出农业资产总额。加工后的可用于下一步模型分析的数据如表1所示:
根据C-D生产函数模型:
Y=A0eλtKαLβLabμ
其中Y表示农业生产总值(亿元),A0表示2002年科学技术水平,λ表示科技进步速度,K表示农业投入资本总额(亿元),Lab表示劳动力(万人),L表示农业耕作面积(万亩),对模型先进性对数化,Log(Y)=Log(A0)+λt+αLog(K)+βLog(L)+μLog(Lab)
由对数化后的模型可以看出,A0表示2002年科学技术水平,λ表示科技进步速度,A0为一常数,而λ同样可以通过2002年到2007年期间的农业科技贡献率求出商丘市农业科技进步的速率,因而二者在模型中都为常数,在运用Eviews进行回归分析时,用常数C来代表A0与λ,但这并不意味着科技进步对农业生产不具有推动作用,由后面的回归结果可以看出,常数项C(即原模型中的A0的对数值)的T值与P值都很显著,并且求得的常数系数很大,在将其放入原模型中,我们可以发现,同样的资本,土地,劳动的投入经过科学技术这个乘数效应,其对农业总产值的增加的推动作用都得到显著提升,这也表明科学技术对其他要素具有极强的辐射作用,即科学技术对农业生产的推动作用体现在对其他生产要素的强化。
运用EVIEWS软件对模型进行回归分析,输出结果如表2所示。
由输出结果可以看到,拟合结果的R-squared=0.998961,Adjusted R-squared=0.997403,表明商丘市农业总产值的数值的99.74%的变化可以由农业投入资产合计的对数与劳动力的对数值的变换来解释,同时F-statistic也很大,表明模型总体上拟合的不错。同时我们也可以观察到模型中LOG(L)前面的系数小于0,这显然不符合经济含义,但是结合商丘市的实际状况来看,由于搜集的是商丘市的总体数据,而土地的规模集中经营只存在部分的试点单位,因此总体上并不存在土地的规模经营,拟合效果也就不理想。对此笔者考虑把模型中的土地变量L去掉后再进行回归分析。
把模型中的土地变量剔除后再次对模型进行回归分析,输出结果如表3所示:
回归分析结果的R-squared,Adjusted R-squared,F-statistic均很大,并且变量前的相关系数都为正数,这符合实际经济含义,即商丘市的农业产值随着劳动力和总资本的投入的增加而增加。
此外,从回归结果中我们还可以发现,两个变量前的系数α+μ≈1.018>1,即资产和劳动的产出弹性大于1,表明商丘市2002-2007年农业生产呈现规模报酬递增的状态,也间接证实商丘市近年来在农业生产要素集中化趋势带动下逐步形成规模效益。
总之,商丘市在已有的土地经营模式下加大对劳动力、资金、科技的投入,提高农业生产经营中要素的集中度,大大提高了农业生产效益,约10%的投入增长带来了农业产值15%的增长,农业要素集中化所带来的规模报酬递增效应在商丘得到了充分体现。这也证明了商丘市探索适度规模经营的正确性。
三、结束语
基于上述对商丘市的实证模型分析,结合当代中国国情,我们可以进一步得到农业集中化经营以市场为导向、以效益为中心的本质,形成市场化的价值取向;同时其发展过程中形成的专业化分工、规模化经营及产业集聚效应,有利于农业产业结构的进一步优化和土地资源规模效应的发挥,也有利于整合社会资源,加快城镇化进程;其产加销一体化的组织结构,既能有效延伸农业产业链条、实现农产品的更大增值,又能有效聚集农业资源,有利于促进农业资金、技术、管理的集约,并且其推进过程中可以培育大批农村生产、经营、管理人才,有利于提高农业劳动者的经营技能和整体素质。归根到底,农业集中化经营能有效促进农业生产方式的变革,是传统农业向现代农业转变的重要载体,应作为中国农业转型阶段的重要战略措施加以实施。
参考文献:
1、马歇尔.经济学原理[M].华夏出版社,2005.
2、(美)保罗・萨缪尔森,威廉・诺德豪斯.Microeconomics[M].人民邮电出版社,2004.
篇7
关键词:C语言 计算机 软件编程 编程方法优化
1、C语言概述
C语言本身具备着较为优越的功能,而其本身拥有的兼具汇编语言和高级语言特点的能力,也是C语言能够在今天的计算机编程中得到广泛应用的原因所在。C语言发展到今天,已成为各种计算机编程语言的基础,而其具备的灵活方便、简洁紧凑、适用于多种操作系统、可自由书写等特点,更为C语言的广泛应用提供了坚实基础。
2、基于C语言的计算机编程技术
2.1 C语言中的函数
在基于C语言的计算机编程技术中,由于具体的编程过程需要分为若干个模块,这就使得其中每一个模块功能的实现,都需要由函数完成。对于基于C语言的计算机编程技术来说,其本身需要应用多种特有的函数,而这类函数的应用过程,相关编程人员需要进行命名、定义参数名以及定义返回值类型等操作,这样才能够顺利完成基于C语言的模块功能设计。当然由于计算机技术的不断发展,编程人员大多数时候都无需手动输入C语言相关的函数,只需要在编程时输入“#include”指令,就可以使用定义好的函数库完成具体的编程操作。
2.2 变量存贮器类型的合理定义
在基于C语言的计算机编程技术中,对变量存贮器类型进行合理定义也是这一技术的重要组成部分。具体来说,基于C语言的计算机编程往往需要应用不同类型的变量存贮器,而不同的变量存贮器对于编译代码的执行效率也不尽相同,为此编程人员可以在子程序模块编程中尽量选择局部变量存贮器,整个程序模块的编程则可以选择全局变量存贮器,这样就能够较好实现基于C语言计算机编程过程中变量存贮器类型的合理定义。
2.3 算法技巧及位操作
对于基于C语言的计算机编程来说,算法称得上是这一编程语言的灵魂所在,这就使得编程人员在应用C语言进行计算机编程时,必须掌握一定算法技巧,对于基于C语言的计算机编程来说,其本身具备着自然语言和流程图两种算法表示方法。值得注意的是,在应用流程图对基于C语言的计算机编程算法表示中,编程人员能够基于这一表示了解流程图符号的含义,这样就能够保证其较好的进行基于C语言的计算机编程算法技巧应用。
2.4 多重\算次序
在基于C语言的计算机编程中,C语言本身对于变量多重运算求值顺序没有形成统一的规定。有过应用C语言编程经验的人就会了解到,不同C语言编译系统存在着细微差别,而很多C语言编译系统在多重运算次序上存在着一定差别。据笔者调查得知,在我国当下基于C语言的计算机编程中,参数求值顺序从右到左最为常见,这就使得基于C语言的计算机编程多重运算次序大多为先运算最后面,依次运算前面,这种基于C语言的计算机编程多重运算次序选择有着较好的可读性和移植性。
2.5 指针用法
对于基于C语言的计算机编程来说,指针用法也是这一编程的重要环节,在论述这一环节前,首先需要了解基于C语言的计算机编程中指针变量。结合相关文献资料笔者发现,定义指针变量时必须对其进行初始化,否则存储空间操作很容易出现严重错误。值得注意的是,编程人员还可以通过加减数值移动指针位置,完成具体的指针计算。此外,应用函数库中的 void 函数,就能够实现指针变量的定义,最终实现将任意数据类型的地址赋给指针变量。
3、基于C语言的编程方法优化
结合上文内容,对基于C语言的计算机编程技术有了较为直观的认识,而为了保证基于C语言的计算机编程技术能够更好发挥自身作用,笔者结合自身多年编程经验与相关文献资料,对基于C语言的计算机编程方法优化进行了详细论述,希望这一论述能够为相关C语言计算机编程从业者带来一定启发。
3.1 优化函数调用
对于基于C语言的计算机编程技术来时,想要实现自身的优化,优化函数调用属于较为有效的方法。具体来说,在基于C语言的计算机编程技术函数调用的优化中,首先需要禁止函数调用传递结构,之所以需要禁止传递结构的函数调用,主要是由于函数调用传递结构会将整个结构复制到堆栈,这就将大量占用堆栈空间,最终加重整个系统的负担,而为了解决不能函数调动传递结构这一影响,可以采用结构指针解决这一问题,这样就顺利实现了基于C语言的计算机编程技术函数调动优化。
对于基于C语言的计算机编程技术来说,其本身具备着多种能够提高自身编程效率的库函数,但这些函数往往具备着代码量大、效率低的缺点,这种缺点之所以出现,主要是由于库函数需要保证自身的广泛适用性,所以编程人员在具体的工作中,就可以结合库函数,自己设计一段函数程序,这样也能够较好实现函数调用的优化。
3.2 指针在数组中使用
对于基于C语言的计算机编程技术来说,想要实现自身技术的优化,就可以将指针在数组中使用,这样就能够大大提高程序的运行效率。具体来说,一般基于C语言的计算机编程需要多次计算数组地址来获得数组中相应的每一个数值,这就大大影响了程序的运行效率,所以笔者建议将指针变量直接指向数组中元素,这样就能够较好实现基于C语言的计算机编程技术优化。
3.3 优化循环语句
为了能够实现基于C语言的计算机编程技术优化,对循环语句进行优化也是优化的较好选择。在基于C语言的计算机编程中,某些重要的循环直接关系着程序运行速度,所以笔者建议将有些在运算时并不需要加入循环变量的任务置于循环外,这样就能够较好实现循环的优化,大大提高程序的运行速度并降低CPU 的负担。
4、结语
在本文就基于C语言的计算机编程技术展开的研究中,笔者详细论述了C语言概述、基于C语言的计算机编程技术以及基于C语言的编程方法优化,希望这一论述内容能够在一定程度上推动我国计算机编程技术的发展,并为于C语言的学习者带来一定帮助。
参考文献:
[1]刘秀明. 基C语言的计算机软件编程实验研究[J].电子技术与软件工程 ,2014(5):263.
篇8
作的一般框架,通过实例描述了动态连接库的实现及其制做方法、编程步骤,这种方法具有
普遍的意义。
关键词 VB 动态连接库DLL C程序
一、引言
Visual Basic( 以下简称VB)是一种可视化的面向对象的编程语言,以其编程简单、快捷
等特点,深受广大WINDOWS程序员的青睐。利用VB开发界面友好、操作方便的软件只需
很短的时间。但是VB运行速度较慢,对于庞大的科学计算问题,VB的这种慢速会使人难
以忍受。C语言是国际上非常流行的一种中级编程语言,以其灵活、高效等优点而获得广
泛应用,许多的应用程序都是用C语言在DOS环境下编写而成。那么如何发挥VB和C这两
种语言的优势,用VB设计一种良好的for windows界面来调用C语言程序,即实现VB调用C
语言程序呢?现有的文献只提到动态链接库(以下简称DLL)可以将这两种语言连接起来,
但有讲动态链接库DLL的制做及其编程方法。本文详细介绍了Borland C环境下制作动态链
接库以及VB调用for dos动态链接库的的方法、步骤,并通过实例描述VB调用C程序的全过
程。
二、用Borland C编写DLL程序的方法
要想实现VB调用C程序,首先需要用Borland C编写动态连接库DLL程序(假设DLL程序
取名为example)。动态链接库包含四个文件:C语言源程序(.C)、模块定义文件
(.DEF)、原型函数文件(.H)和工程文件(.PRJ)。下面分别详细介绍一下这四种文件
的具体结构。
1、编写C语言源程序的框架:
C语言源程序(example.C),它包括三种函数:入口函数、输出函数和终止函数。其具体
结构如下:
/*************************************/
/* 文件名: example.C */
/*************************************/
#include
/***********入口函数***********/
int FAR PASCAL LibMain ( HANDLE hInstance,
WORD wDataSeg,
WORD cbHeapSize,
LPSTR lpszCmdLine )
{
if (cbHeapSize!=0)
UnlockData(0);
return (1);
}
/***********输出函数***********/
int FAR PASCAL example(int param1,...,char param n)
{
...... /*C语言应用程序*/
}
/***********终止函数***********/
int FAR PASCAL WEP ( int /*SystemExit*/ )
{
return(1);
}
以上各组成部分参数的含义:Windows.h头文件,它包含有数据类型的定义、API入口
点定义和其它有用的参数信息。PASCAL说明符定义该程序的传递参数和净化堆栈的协定
(注意:DLL外部传送的指针必须是远指针FAR)。LibMain带四个参数:
hInstance、 wDataSeg、cbHeapSize和lpszCmdLine。第一个参数hInstance是DLL事例句
柄, wDataSeg参数是数据段(DS)寄存器值,cbHeapSize参数是在模块定义文件中定义
的堆的大小,LibMain 使用该值使本地堆初始化。lpszCmdLine参数包括命令行信息,但
很少被DLL使用。一般来说,这四个参数是制作DLL通用的参数。
如果不想让DLL数据被封住,那么必须调用unlockdata恢复正常的非锁状态,如果DLL初始
化已经成功,DLL则返回1,若不成功则返回0值,且 DLL退出系统。
DLL的输出函数实现用户所要完成的任务,这部分是DLL的核心。它与一般C语言程序不同
之处在于无scanf函数。所有的外部指针都是远指针FAR。画直线函数要用lineto函数。
DLL包括一个终止函数,终止函数有时称为退出函数,它的名字必须是WEP。且它可以被
包括在DLL模块定义文件的EXPORTS段中。
2、模块定义文件(.DEF)的结构和各段的意义
模块定义文件的结构如下:
/*************************************/
/* 文件名: example.DEF */
/*************************************/
LIBRARY example /* DLLname */
DESCRIPTION ' example.DLL'
EXETYPE WINDOWS
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE SINGLE
HEAPSIZE 1024
EXPORTS
example @1
WEP @2
关键字LIBRARY是把这个模块视为一个DLL,库的名字example跟在其后,且必须与该库
的名字、DEF中的DLL的文件名相一致。DESCRIPTION语句采用一个字符串,其长度可达
128 个字符,通常用它来保存模块描述的信息。EXETYPE windows语句每个windows应用程
序和 DLL都需要。DATA语句定义该库数据段的内存属性,关键字MOVEABLE允许内存管
理程序在 必要时移动内存段,关键字SINGLE是DLL必要,因为DLL总是有一个单一数据段,
而不管访 问它的应用程序的数量。HEAPSIZE语句用来定义一个DLL局部堆的初始规模,
篇9
【关键词】C语言 编程 结构化
1 C语言的编程特点
1.1 C语言的定位
很多人都普遍的认为C语言是在B语言的基础上发展过来的一种高级编程语言。然而从编程语言的层次结构方面来说,我们应该认为C语言,是在汇编语言的基础上发展而来的,它比汇编这类编程语言要高级,但是比一些可视化的编程语言又低级,所以准确来说,C语言应该算是中级编程语言,或者称为准高级程序设计语言。目前很多高级程序设计语言都是在C语言的基础上发展而来的,或者至少借鉴了C语言程序设计的思想。80年代初,Bjarne Stroustrup在贝尔实验室对标准C进行了改进和完善,C++得以诞生,使得面向对象的程序设计思想得以提出和落实;21世纪初,人们将C语言和单片机相结合,开发出来了应用于单片机编程的C51语言,使得单片机的程序设计从反复的汇编语言设计中抽身出来,大大的提高了程序的设计效率。
可见C语言在整个编程语言的发展过程中属于承上启下的作用,同时其自身的应用领域又在不断的更新和发展。
1.2 C语言的编程特点
通过上述C语言的定位可知,它既具备高级程序设计语言的结构性和层次性特点,同时也兼具了低级程序设计语言的实用性。
(1)用相应的C语句可以实现对微机操作中的字节、地址等进行直接访问。
(2)基于函数的结构化特点,使得复杂的软件系统可以由多个人,以设计子函数的形式,分别各自进行程序开发。之后进行函数的汇总,最后由主函数,按照既定的程序流完成对各个子函数的调用就行。
(3)丰富的数据类型,尤其是指针类型,可以很方便的应用于复杂数据和大数据的访问和处理。
(4)由于C语言基本上不向低级语言那样直接涉及到对硬件的操作,所以C语言程序往往具有很好的通用性,方便程序移植。
2 C语言的编程技巧
2.1 扎实基本工
在进行C语言程序设计之前,首先要熟悉运算符、表达式以及各钟类型数据的定义和使用方法,其次对顺序、分支和循环三大程序结构要有较好的把握,并熟练使用while循环、for循环、switch语句等。如果要在程序的设计上有进一步的提高,那就需要对“指针”能够进行熟练的使用了。指针可以用于表示变量,但更多的是用于代表数组、存储地址以及函数地址。在代替不同变量时将返回不同的值,可以说指针的功能十分强大。对其熟练使用有助于程序设计的简洁和便利。
2.2 立足C语言的结构化的特点,熟练程序设计基本构型
C语言典型的特点就是结构化,在进行具体的程序开发时,应该首先要根据设计的软件项目,然后进行任务的细分,由于C语言不需要编程人员去配置硬件资源,因此程序设计人员可以把更多的精力放在各个细分任务的子函数设计上,考虑用最简单的程序结构去实现。在数据类型的选择上,能够用短数据类型就尽量用短数据类型。
另外,为了提高程序代码的执行效率,建议C语言程序设计人员要了解C语言程序最终运行的硬件的基础机构,是在微型计算机上运行,还是在单片机上运行。在了解硬件平台结构及内部资源的前提下进行相应的程序设计,将有助于提升程序的运行效率。
3 C语言的实践应用
3.1 混合编程
很多程序设计人员都认为C语言比汇编语言高级,所以认为没有必要去学习和了解低级语言。其实这种思路是及其错误的。汇编语言之所以称之为低级语言,是因为其更加贴近于硬件。在编程时一定要明确的在代码中描述清楚,数据如何从一个存储单元送入另一个单元,因此显得编程复杂,由于其直接和硬件打交道,所以被称为低级语言。但是其运行效率却是最高的。所以在C语言程序设计上要有质的飞越,有必要了解汇编语言的编程思路和理念。有条件的话可以将C语言和汇编语言混合编程,从而发挥出两类编程语言各自的优点,达到设计程序的最优化。
在进行C语言和汇编语言的混合编程时,无论是采用C语言调用汇编,还是汇编调用C语言,还是C语言嵌入汇编的方式,都应该对调用关系、各模块的连接以及参数的传递进行妥善的处理。对于调用关系,则需要对调用的函数和过程进行说明;通过明确函数和变量的命名以及存储模式的关联性,从而实现各模块的有效连接;通常情况下往往通过堆栈的方式来实现参数的传递。
3.2 C语言在工程上的应用
C语言在电力电气系统、交通控制系统以及机器人控制方面都有广泛的应用。下面以工厂通风控制系统的C语言程序设计为例来加深对C语言软件编程思想的理解。
工厂通风控制程序的设计时采用模块化得设计思想,即单独的编写初始化函数void Initial(void);中断处理函数void**(void)interrupt;数据采集函数unsigned char ADconvert(unsigned char address)以及其它函数等。然后由主程序负责对各个子函数的调用,从而实现对工厂通风系统的控制。简化的主程序如下:
main( ){ ... Initial(void);
while(l){ReadAi( );ADconvert(unsignedchar address);
DataChange( ); DisPlay( ); …}
整个系统由于需要不停的对工厂数据进行采集,所有主程序的结构就设置成了循环结构,当通风控制系统有序的进行准备工作之后,通过调用初始化函数,程序就开始进入主循环,主循环中通过调用采集程序,完成对测量对象的循环检测以及对显示程序,数据处理函数的循环调用。一遍又一遍的不停循环执行主程序。在这个主程序循环的过程中,如果有异常情况发生,则随着中断触发事件的发生,将进入中断响应,实现对中断函数的调用。
4 总结
C语言作为编程语言中经典的一类程序设计语言,因其结构化、可移植化、编程简介的特点,被广泛的应用国民生产的各个领域。而随着信息技术、互联网技术以及物联网技术的飞速发展,未来C语言的应用领域将变得更加广泛。对C语言在软件编程方面的研究和分析将变得更有意义。
参考文献
[1]顾泰龙,李远静.基于C语言的计算机软件编程实验研究[J].软件工程师,2013(08).
[2]李强.计算机软件开发语言的选择探讨[J].电子制作,2013(09).
作者单位
篇10
关键词:独立学院;C语言;学生学习特点;困难;教学方法
中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)25-7176-02
Independent Colleges C Language Teaching Test
LIU Li-juan
(Nanjing Normal University Taizhou College, Taizhou 225300, China)
Abstract: C language is one of the Language Tests which an independent non-computer science and engineering college students in obtaining bachelor's degree level certificates must participate in.Examination pass rates over the years reflect that, C language have a certain degree of difficulty, Secondary examination pass rate was generally not high. How to make the C language teaching more effective for students to grasp the main points to improve programming ability, successfully passed the test, this is a problem worthy of careful consideration. From characteristics of students in the independent College, C language learning difficulties, thinking of C language teaching methods several aspects, followed by the C language Teaching Test of independent Institute are discussed,expectations are constantly in search of better teaching methods.
Key words: Independent Institute; C language; student learning characteristics; difficulties; teaching methods
在计算机技术飞速发展的今天,各种计算机软件开发语言是计算机更新换代的一个重要条件,常见的有VB、C、C++、C#.NET等等。其中,C语言可移植性好,既具有高级语言的特点,又具有低级语言的许多特点,因此它属于一种中间语言一直广泛使用到今天。特别是在高校,《C语言程序设计》这门课一般面向初学程序设计的学生开设,掌握C语言的精髓,是学生学好其他后续专业课程的关键。对于独立学院要参加等级考试的学生来说,C语言学习要求更高、难度更大,因此要针对特殊环境下学生的特点不断改进教学方法以达到最终的教学目标。通过多年教学,现对独立学院C语言等级考试教学做如下几点探讨。
1 独立学院学生的学习特点
独立学院招收的本三批次学生,大多在学习能力、学习自主性方面还是稍差的,学习过程中,习惯于接受老师课本上基本知识点的讲解,对于补充提高的内容,比较难于掌握,加上课后几乎不问问题,自学能力差,不擅长复结,一旦有问题得不到及时解决,就会在后续学习过程中越积越多,从而导致整门课程学习的恶性循环,考试复习更是无从下手。
2 C语言学习中存在的困难
C语言学习中存在的困难主要体现在教学过程中,教学过程涉及到两个重要方面:教材内容和教学方法。就教材内容而言,C语言教学使用的是谭浩强编写的《C程序设计》。整本教材所包含的内容比较侧重于理论知识点的讲解,适当加上了一些实例分析,而不是一本侧重于培养学生编程能力的教材。书中包含的基本知识点很多,而且相对而言显得比较琐碎,但前后章节又彼此相辅相成,学生如果不花大量时间去记忆,根本掌握不了最基础的语法。
目前在C语言教学过程中,所使用的教学方法存在以下问题:
1)教学过程枯燥
有的老师在教学过程中使用多媒体课件PPT教学,但PPT上的内容跟书上的几乎一样,从课件上看不出任何重点、难点的标注,上课相当于加上稍许讲解从头到尾把书上内容读了一遍。学生本身就觉得书本上理论知识枯燥,如果教学过程安排不恰当,学生从心理上就会逐渐有排斥性,从而导致他们从一开始就没兴趣、不好好学的现象。
2)忽视教学方法的总结
事实证明,C语言中有很多学生容易混淆的知识点,特别是在学到后续章节例如函数的时候,学生编写函数调用程序往往会出现理不清思路、不知如何下手的状况,不清楚被调用函数和调用函数分别如何定义、如何编程,如果在授课过程中教师能够及时总结,学生理清了思路,就可以很顺利地去解决问题了。
3)忽视学生编程能力的提高
为了应付等级考试,有的老师一味追求题海战术,认为学生练习题目做得越多运用越熟练,但在熟练的同时,是否考虑到这样两个问题:有些学生一开始就做不下去反过来抄袭答案;使学生重复做同类型题目会浪费学生大量的时间。再加上老师如果不注重强调编程题算法的重要性,学生编程能力往往得不到提高。
4)不了解学生的掌握程度
教学过程是教和学的统一体,忽视任何一方整个教学效果都不会理想。因此在教学过程中,不仅要注重教师的教,也要注重学生的学。如果仅仅考虑如何教,教师就不能接收到来自学生的信息反馈,从而无法根据学生的学习情况及时改进教学方法,调整教学进度。而在很多授课过程中,仅仅只是教师的讲解,没有任何跟学生的提问互动思考等过程,或者课后跟学生也毫无交流。缺少了学这样一个巨大的信息反馈渠道,教学过程根本无法很好的完成。
3 C语言教学方法思考
3.1 教材总体把握
1)要掌握若干数据类型,包括char、int、float等基本数据类型和数组、结构体、共用体等构造数据类型,这是程序中最基本的数据存储方式。
2)掌握三种基本的程序结构:顺序、选择、循环。任何一个复杂的程序,都是由三种基本结构组成的。其中,循环是重点也是难点。
3)C语言使用函数来实现某个特定功能。
4)C语言提供了一个十分便利的工具――指针,它能直接指向内存空间单元,从而可以更加方便地操作变量,简化程序设计。
3.2 具体教学方法
1)重视理论基础
通过清晰的讲解让学生打下扎实的理论基础,在学生记忆知识点的同时利用典型题目,帮助学生灵活应用所学知识,及时巩固。
2)让初学者学会读程序
初学程序设计,不会编写程序代码属正常现象。带领学生从一开始多看程序,阅读的程序越多,解决不同问题的算法也就能够积累越多。读程序的最大好处是先学别人怎么写程序,有了一定积累再自己尝试去动手编写程序。在记忆算法的同时,可以发现很多问题归根到底可以使用同一方法解决,因此在阅读程序的过程中还要学会算法的归类。
3)注意教学方法的总结
在此对C语言中的两个难点函数的编写和指针分别作总结。
函数调用时,main函数的框架一般是变量定义、简单输入、函数调用、简单输出,而实现某个特定功能的函数要看成一个整体单独定义,其框架一般是变量定义、实现函数功能的处理语句、返回值语句。特别是对于递归函数的编写,可以遵循“找递归公式?写递归函数?补充main函数”的规则,这种方法对于学生理解“汉诺塔”问题相对容易些。对于嵌套函数,建议根据算法先写出要使用到的几个空函数框架,再逐个补全各函数语句。
对于指针这章,关键要抓住变量的入口地址,其中所对应的有单个变量的地址、数组入口地址、函数的入口地址。
指向数组的指针,可以定义一个指向数组入口地址的指针变量p,通过p++使指针指向数组的每一个元素,因此*p可代替数组的每一个元素,避免了使用下标法来引用元素。字符串的指针就是指向数组的指针的一个特例,特别要注意经常使用字符串结束标记‘\0’作为循环结束的判断条件。
指向函数的指针很简单,因为它始终指向函数的入口,可以在指针变量名前加*就可以代替函数名进行使用。一般使用指向函数的指针有这样一个特殊场合,一个函数有多个参数,多次调用此函数时,每次前几个参数相同,而最后一个参数不同,最后一个参数可以利用一个指向函数的指针来实现,每次使指针指向另外几个不同的函数。例如,在编写一个求定积分的通用函数时,下限、上限保持不变,而每次函数表达式不同,我们就可以用此方法来实现。
返回指针值的函数一般在函数被调用后,会返回一个指针,以便于主函数利用此指针进行其他操作,一般返回指针值的函数可用在查找信息的编程中。
指针数组和指向指针的指针,通常要联合起来使用,因为指向指针的指针为二级指针,必须通过一级指针才能与变量相互引用,而指针数组是一个很好的中介,它可以将若干一级指针聚集起来,指向若干个变量。这时,我们只要通过一个二级指针就可以很方便地指向指针数组的每一个元素,从而间接地指向每一个变量。
4)重视上机操作
一般上机课时间有限,因此建议课后让学生动手在纸上编写代码,上机课主要抓紧时间进行调试。老师要重点讲解编程题目的算法,提醒学生可以将大的程序分解成熟悉的小程序编写,再将小程序连接起来,上机大部分时间还是让学生自主完成程序的调试,这样有利于学生自我总结提高,掌握编程技巧。
3.3 信心教学
教师在平时的教学过程中,首先要给学生树立起学习的信心,激发他们的学习激情。多年来,C语言的教学都是以输出“HELLO WORLD”开始讲解程序设计语言的,该程序过于平淡,不能引起学生的学习兴趣。我们可以考虑演示一个事先编好的小游戏程序,从一开始吸引学生的注意力,激发其浓厚的学习兴趣。在学习过程中,要发挥学生的学习信心,可以采取诸如:编故事提高语言的趣味性、引用经典数学问题、让学生亲自参与等方法,让学生在不知不觉中即学到了知识,又活跃了课堂气氛。最终,通过等级考试的考核让学生实现其信心。
C语言的学习存在一定难度,对于独立学院的学生来说参加等级考试学习难度更大,因此在教学过程中,我们要不断研究采用合适的教学方法让学生产生学习兴趣,掌握学习方法、勤于做题、自主编程,最终顺利地通过等级考试。
参考文献:
[1] 王淑敬. 关于C语言教学的一点体会[J]. 计算机科学,2008.
[2] 赵妮, 熊高君. 激活课堂气氛,提升学习兴趣――谈C语言课堂教学方法[J].教育与教学研究,2008.12.
[3] 何岸. 论《C语言程序设计》课程的趣味教学[J]. 高等函授学报(自然科学版),2008.10.