189 8069 5689

c语言函数模块实例 c语言用函数实现模块化程序设计

C语言中的“模块化、头文件,库函数之间到底是什么关系”请行家举例详细说明,要简单哦,我什么都不懂

头文件:包括两种,举个例子,#include stdio.h 和#include "type.h"

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网站空间、营销软件、网站建设、钦北网站维护、网站推广。

前者,当你在C语言的最开头加上这句后,就可以使用系统已经帮你包装好的函数,例如printf等,后者则是你自己写的头文件。

库函数:是C语言编译器已经帮你设计好的程序,例如打印信息可以直接使用printf,打开硬盘的某个文件可以使用fopen,等等。

模块化:这个概念就是要求我们尽量将一个程序分割成很多小的功能,每个功能均用一个函数来实现,而不是一个程序从头到尾只用一到二个函数就完成了。

在c语言中如何实现函数模板

各种用 C 语言实现的模板可能在使用形式上有所不同。现以一个求和函数 Sum 为例,用 C++ Template 可写如下:

template R Sum(const T *array, int n)

{

R sum = 0;

for (int i = 0 ; i n ; ++i)

sum += i;

return sum;

}

如果不是内置类型,该模板隐式地需要 有R R::operator+=(T)运算符可用。

1. 使用函数指针作为 Functor 替换者

Typedef struct tagAddClass

{

Void (*add)(char* r1, const char* r2);

Int elemSize;

Char sum[MAX_ELEM_SIZE];

} AddClass;

void Sum(AddClass* self, const char* array, int n)

{

for (int i = 0 ; i n ; ++i)

self-add(self-sum, array + i*self-elemSize);

}

使用时:

Void AddInt(char* r1, const char* r2) {

*(long*)r1 += *(int*)r2; }

AddClass addClass = {AddInt, 2, 0 };

Int array[100];

Read(array);

Sum(addClass, array, 100); …..

2. 用宏作为Functor的替换者

#define GenSumFun(SumFunName, Add, RetType, ElemType)

RetType SumFunName (const ElemType *array, int n) \

{

RetType sum = 0;

for (int i = 0 ; i n ; ++i)

Add(sum, i);

return sum; }

使用时:

#define AddInt(x, y) ((x) += (y))

GenSumFun(SumInt, AddInt, long, int) …..

Int array[100];

Read(array);

Long sum = SumInt(array, 100); …..

3. 所有可替换参数均为宏

至少需要一个额外的文件(实现文件)为 impsum.c

/* impsum.c */

RetType FunName(const ElemType *array, int n)

{

RetType sum = 0;

for (int i = 0 ; i n ; ++i)

Add(sum, i);

return sum; }

使用时:

#undef RetType

#undef FunName

#undef ElemType

#undef Add

#define AddInt(x, y) ((x) += (y))

#define RetType long

#define FunName SumInt

#define ElemType int

#define Add AddInt

#include impsum.c …..

Int array[100];

Read(array);

Long sum = SumInt(array, 100);

4. 总结:

第一种方法,易于跟踪调试,但是效率低下,适用于对可变函数(函数指针)的效率要求不高,但程序出错的可能性较大(复杂),模板函数(Sum)本身很复杂,模板参数也比较复杂(add)的场合。

第二种方法,效率高,但很难跟踪调试,在模板函数和模板参数本身都很复杂的时候更是如此。

第三种方法,是我最近几天才想出的,我认为是最好的,在模板参数(Add)比较复杂时可以用函数(第二种也可以如此),简单时可以用宏,并且,易于调试。在模板函数本身很复杂,而模板参数比较简单时更为优越。但是,可能有点繁琐。

C语言利用函数模块这里有个程序不懂

不知道你要实现什么功能,只给你说了下问题所在

#includestdio.h

#include "conio.h" //getch()函数要这个头文件

int sum_(int m,int d);//函数用之前要声明

int leap(int y);

void main()

{

int sum_(int,int);

int leap(int);

int y,m,d,s;

printf("Please input the year,month and day:\n");

scanf("%d%d%d",y,m,d);

sum_(m,d); //这里返回的S没用上

leap(y); //这里返回的S没用上

printf("It's %d days",s);//这里的S没有给值,是不是应取上面两个函数中的一个

getch();

}

int sum_(int m,int d)

{

int s;

switch(m)

{

case 12:s=334+d;break;

case 11:s=304+d;break;

case 10:s=273+d;break;

case 9:s=243+d;break;

case 8:s=212+d;break;

case 7:s=181+d;break;

case 6:s=151+d;break;

case 5:s=120+d;break;

case 4:s=90+d;break;

case 3:s=59+d;break;

case 2:s=31+d;break;

case 1:s=d;break;

}

return s;

}

int leap(int y)

{

int s,m; //这里的m,s没有初始化,应从主函数中传递过来如用int leap(int y,int s,int m)

if(m2y%400==0||y%100!=0y%4==0)

s=s+1;

return(s);

}

c语言中如何实现模块化?

C语言中用函数来实现程序模块。

模块化程序设计是将一个大的任务分解成若干个小任务,再将小任务分解成更小的任务,直到每一个任务都只完成一个独立功能。这样的每个任务都叫做模块,C语言中模块是用函数来实现的。

借助函数来实现程序模块化,把你想实现的功能用函数来实现,不同功能的就用不同的函数来实现,而且,函数在一定程度上可以被复用,所以称为模块,搜索零基础学通C语言系列大全之线程_模块儿_静态库_循环总结视频教程就可以看了。

C语言中怎样调用函数(举个例子)

C语言中调用函数的方法及步骤:

工具/原料:C语言

1、首先需要输入想要调用的函数。

2、然后当输入一个括号后,即可观察他的参数。

3、接着在对应的参数中输入参数值。

4、然后,系统会发生一个警告。

5、接着需要调用它相应的头文件。

6、最后再次编译,发现没有任何警告和错误即可。


新闻名称:c语言函数模块实例 c语言用函数实现模块化程序设计
文章转载:http://cdxtjz.cn/article/hhddeg.html

其他资讯