主函数与函数互变编程方法的实现

2012-01-12 04:01景建国
长治学院学报 2012年2期
关键词:程序段C语言调用

景建国

(长治职业技术学院,山西 长治 046011)

主函数与函数互变编程方法的实现

景建国

(长治职业技术学院,山西 长治 046011)

文章介绍了C语言程序中如何将主函数变为函数、函数变为主函数的程序设计方法,为扩充程序的使用、程序调试和分析提供了方便。

函数;主函数;程序;模块化

1 引言

C语言是一种结构化的程序设计语言,除了提供顺序、选择、循环三种基本结构外,还提供了定义“函数”的功能,允许对函数单独进行编译。通过文件包含实现对单独编译的函数进行调用,为模块化程序设计提供了方便。由于C语言这种函数式的结构,难怪有人说:C语言程序设计就是编写函数。这一点不假,因为一个C语言程序中至少要编写一个主函数,且只能有一个主函数,没有主函数的程序是不能直接执行的,因为C语言程序的执行总是从主函数开始的。

2 主函数变为函数

在程序设计学习初期,一般编写的程序只有主函数,主函数中包括了数据输入、数据处理、数据输出等程序段。这种情况下,源程序的程序行会很多,为程序的调试和程序的分析带来许多不便;还有源程序中的某些程序段,具有一定的功能或作用,在以后的编程中也可被利用。如果能把这些程序段变为函数,不但为程序的调试和程序的分析带来方便,也可以作为一个独立的函数单独编译,通过头文件的包含,被其它程序调用,扩展程序的应用范围。

2.1 排序程序段变为函数

排序是数据处理的重要内容,排序的方法也很多,对应的排序段也很多。如果把该程序段变为函数,就可单独分析该程序段的执行过程和结果,通过单独编译,其它的程序中就可以调用。下面以常用的冒泡排序程序进行介绍。

以上程序对数组a中的10个元素按从小到大排序,源程序中的主要程序是排序程序段,变为函数如下:

变为函数的关键是如何把要处理的数据传递给函数的形式参数,传递给形式参数的数据中哪些是可以变化的。这些变化的参数,就形成了函数中处理数据的可变化的内容,增加了函数的通用性。

以上的bubble函数中,第一个形式参数是主函数中所排序的数组,第二个形式参数是参加排序数的个数,由于这两个变化的形式参数,在调用此函数时,只需用不同数组名的不同排序数的个数所具有实在参数去替换它,即可实现不同数组、不同个数的数组排序。在bubble函数的基础上,可以实现数组元素的从大到小排序、只对奇数下标的元素进行排序、只对偶数下标的元素进行排序、把排序的数据个数一分为二,前半部分按从小到大排序,后半部分按从大到小排序。因此,变为函数后它的灵活性就增加了。

2.2 求阶乘程序段变为函数

求解累加和阶乘(累乘)的问题,也是程序设计中的主要内容,特别是在用级数进行近似求解用时的最多,有的问题中累加和阶乘求方式都用才能解决。如果能把这两种求解的程序段变为函数,也可起到与冒泡排序函数同样的作用。下面以阶乘段为例进行介绍:

以上程序对输入的整型数n计算阶乘。变为函数时,函数的形参只接收一个整型数,在调用该函数时只需用不同的实在参数替换就可求出该数的阶乘。变为函数如下:

在此函数的基础上,通过改变函数循环语句的步长,可以变为求偶数的阶乘、求奇数阶乘、求分子为1的分数的阶乘,重复调用可用于求组合数。需要注意的是,以上程序的返回值是整型,当求阶乘的数较大时,阶乘值就超出了整型数规定的范围,此时只需改变函数的返回值类型和存放阶乘变量的类型即可。

3 函数变为主函数

函数变为主函数的作用在于,由于C语言的程序执行是从主函数开始的,当编好函数后,如果想知道函数功能与具体解决的问题是否一致,需执行和调试后才能确定。由于函数需要调用才能执行,就得与主函数在同一编译单位才能实现。这时如果把函数变为主函数,便可以单独对函数的程序段进行调试并执行,确定函数的执行结果。

在全国计算等级考试上机考试中,不论是二级机试还是三级机试,都要求考生根据题目的要求,编写一个函数,除了函数以外其它的程序部分都不要管。自己想编写函数去练习时,除了自己编写函数外,为了使函数能调试执行,还需输入函数以外的程序段,比较复杂。如果直接把题目中要求处理的问题编写成主函数,便可调试和执行。

3.1 求字符串数组中最长字符串函数变为主函数

编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过函数值返回该串地址的完整程序如下:

以上程序中的函数 fun(char(*a)[81],int num)变为主函数如下:

变为主函数时,保留主函数中的定义和输入数据程序段;要把函数中处理的形参变为主函数调用函数时的实参;把函数中处理形参的程序段变为主函数中的处理程序段;函数返回的值,用输出函数直接输出。这时就可编译、调试和运行主函数来确定函数的输出结果。

在模块化程序设计时,函数变为主函数,可以对各个模块对应的程序直接编译、调试和运行,及时发现模块中的问题,为各模块联合调试打下基础。

4 结束语

主函数与函数互变的编程方法,还需要经过大量的编程实践,才能熟练地掌握,并用于以后的程序设计中。程序编写过程中,通过主函数与函数互变,可以加深对C语言程序设计中函数式程序结构的认识。在C语言程序设计中,函数与被调用函数通过形参与实参进行数据传递时,被调用函数中形参的变化,与调用函数中实参的变化有着一定的关系,这体现在函数形参变量定义的类型和函数对这些形参变量的处理,这就涉及到C语言中较难的数据类型“指针”,如果不断的在编程中使用主函数与函数互变的编程方法,对这些内容的掌握也变得容易些了。

[1]田淑清.全国计算机等级考试二级教程C语言程序设计(2010年版)[M].北京:高等教育出版社,2009.09.

[2]谭浩强,张基温.C语言程序设计教程[M](第三版),北京:高等教育出版社,2007.07.

[3]陈萍等.全国计算机等级考试上机考试题库三级网络技术[M].北京:清华同方光盘电子出版社,2009.10.

[4]柳寒冰.全国计算机等级考试上机考试新版题库二级C[M].成都:电子科技大学出版社,2009.10.

The Main Function of Each Function and Implementation of Programming Changes

Jing Jian-guo
(Changzhi Vocational and Technical Collgeg,Changzhi Shanxi 046011)

This article describes how to program in C language function to change the main function,the function becomes the main function of the programming method used for the expansion of the program,the program provides a convenient debugging and analysis.

function;main function;program;modular

TP312

A

1673-2014(2012)02-0056-03

2012—02—08

景建国(1976—),男,晋城沁水人,助教,硕士,主要从事计算机的开发与应用研究。

(责任编辑 赵巨涛)

猜你喜欢
程序段C语言调用
基于WinCC的物料小车控制系统设计与仿真
基于Visual Studio Code的C语言程序设计实践教学探索
核电项目物项调用管理的应用研究
数控系统手轮回退功能的研究与实现*
LabWindows/CVI下基于ActiveX技术的Excel调用
基于NC程序段的提高数控加工监控阈值与信号同步的方法*
基于C语言的计算机软件编程
数控铣床FANUC 0i 系统刀具半径补偿系统参数设置解析
基于系统调用的恶意软件检测技术研究
高职高专院校C语言程序设计教学改革探索