(本文为博闻网版权所有,转载必须注明出处。)

C语言本身具备最基本功能,所以C函数库就显得十分重要了。C语言本身甚至不提供从键盘读入和向屏幕输出的I/O函数。所有对基本语言功能的扩展都必须由程序员编写。由此而产生的大量代码常常组织在一些函数库中,以方便重复使用。我们前面已经用到标准I/O(stdio)函数库了。标准库包括标准I/O、数学函数、字符串处理、时间操作等等。您可以在自己的程序中使用函数库的概念将代码划分为多个模块。这样更有利于代码的理解、测试和调试,也使重复使用其他程序的代码成为可能。

创建自己的函数库很容易。作为例子,我们将使用本教程前文中的部分代码,用其中的两个函数创建一个函数库。我们从下面的代码开始:

#include 
#define MAX 10

int a[MAX];
int rand_seed=10;

int rand()
/* 摘自 K&R
 - 产生一个0至32767之间的随机数。*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}

void main()

{
int i,t,x,y;

/* 填充数组元素 */
for (i=0; i < MAX; i++)
{
a[i]=rand();
printf("%d\n",a[i]);
}

/* 将数组用冒泡法排序 */
for (x=0; x < MAX-1; x++)
for (y=0; y < MAX-x-1; y++)
if (a[y] > a[y+1])
{
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}

/* 打印排序后的数组 */
printf("--------------------
\n
");
for (i=0; i < MAX; i++)
printf("%d
\n",a[i]);
}

这段代码先用随机数填充一个数组,然后用冒泡法对这些数排序,最后打印排序后的数组。

用您所学的知识,把冒泡排序的代码提出来建立一个函数。因为数组a和常数MAX都是全局的,所以您建立这个函数不需要参数,也不用返回结果。但是应该将x、y和t修改为局部变量。

经测试确认函数可以正常工作后,再将数组元素个数作为函数的参数传入而不使用MAX:

#include 

#define MAX 10

int a[MAX];
int rand_seed=10;
/* 摘自 K&R                                                               
 - 产生一个0至32767之间的随机数。*/             
int rand()
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}

void bubble_sort(int m)

{
int x,y,t;
for (x=0; x < m-1; x++)
for (y=0; y < m-x-1; y++)
if (a[y] > a[y+1])
{
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
}

void main()
{
int i,t,x,y;

/* 填充数组元素 */
for (i=0; i < MAX; i++)
{
a[i]=rand();
printf("%d
\n",a[i]);
}
bubble_sort(MAX);
/* 打印排序后的数组 */
printf("--------------------
\n");
for (i=0; i < MAX; i++)
printf("%d
\n",a[i]);
}

您可以将a也作为输入参数以进一步增强bubble_sort函数的适用性:

bubble_sort(int m, int a[])

这行的意思是:“参数a是一个任意大小的整型数组。”bubble_sort的函数体不用进行任何修改。使用bubble_sort时,要将调用改成:

bubble_sort(MAX, a);

请注意,尽管排序会改变a,但是函数调用并没有使用&a。这样做的原因,当您了解指针后会很清楚。





 打印  电子邮件  反馈  引用
编辑推荐
软件狗是什么?
软件狗(Software Dog)是一种计算机软件的加密方式,是“硬件加密锁”的
间谍软件工作原理
您的计算机是否曾变得非常慢,即使打开Word处理器也会占用很长时间,间谍软件可能
什么是路由算法?
路由器是管理网络流量和发送数据包的,但是它是如何决定数据包发送的呢?通过本文,博
Gnutella文件共...
Napster在巅峰时期或许是有史以来最受欢迎的网站。紧随其后的文件共享体系架构
主页 |  公司信息 |  广告服务 |  招聘信息 |  隐私 |  联系我们 |  帮助 |  条款和条件