十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的长丰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
函数定义的一般形式如下:
类型标识符
函数名(形参表列)
//
这是函数首部
//
以下{
}内的是函数体
{
说明部分
执行部分
}
举例说明如下:
// 定义一个不带返回值的函数
// 函数功能:输出形参的值
void fun(int a, int b)
{
printf("%d, %d\n", a, b);
}
// 定义一个带返回值的函数
// 函数功能:返回2个整数数的最大值
int fun(int a, int b)
{
return ab ? a : b;
}
有些自定义函数可能会被频繁的调用,所以写在一个C文件里是不太方便的。应该把这些自定义的函数写在一个C文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。
举例如下:
1. 在头文件(.h)里声明自定义函数,定义用户写的函数;
2. 在一个C语言文件里写下自定义函数的实现方式,可以写在主函数前,也可在主函数后(需在头文件前声明函数);
3. 在主函数中调用自定义函数,别忘了头文件的声明;
4. 最后编译所有的涉及到的C文件;
#include stdio.h
void number(int);
int main()
{
for(int i = 0;i10;i++)
{
number(i);
1 根据功能,想一个函数名,并设计好返回值类型以及参数列表。参数列表包括参数个数,每个参数类型,以及该参数的作用。
2 根据函数要实现的功能,实现函数的主体代码。
3 按照你设计的想法,传入不同参数类型,验证函数功能并调试。
函数是用户与程序的接口,在定义一个函数前,首先要清楚以下三个问题。1) 函数的功能实现及算法选择。算法选择会在后续文章详细讲解,本节重点关注函数的功能实现。一般选取能体现函数功能的函数名,且见名知意,如求和函数的函数名可取为 add,求最大值的函数名可取为 max,排序函数可取名为 sort 等。2) 需要用户传给该函数哪些参数、什么类型,即函数参数。3) 函数执行完后返回给调用者的参数及类型,即函数返回值类型。 函教定义格式 函数定义的一般格式为: 返回类型 函数名 (类型参数1,类型参数2,…) {函数体 }也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。例如: 类型 函数名 () {函数体 }等价于: 类型 函数名 (void) //建议的书写方式 {函数体 } 如果该函数没有返回类型,则为 void 类型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 类型外,在函数体中,均需要显式使用 return 语句返回对应的表达式的值。 函教返回值 函数的值是指调用函数结束时,执行函数体所得并返回给主调函数的值。 关于函数返回值说明如下。1) 带返回值的函数,其值一般使用 return 语句返回给调用者。其格式为: return 表达式;或者 return (表达式);例如: int add (int a, int b) {return (a + b); //return 后为表达式 } 函数可以含一个或多个 return 语句,但每次调用时只能执行其中一个 return 语句。例如,求整数绝对值的函数: int f (int n) //含多个return语句,但每次调用只执行一个 {if (n = 0)return n;elsereturn -n; }
如果func是一个已经定义的函数,
可以这么写:func();
也可以这么写,如果func有返回值:a
=
func();
还可以这么写:
while(func()){}或
if(func()){}
(1)素数判断函数:是返回1,否则返回0
int prime(int n){
int i;
if(n2 !(n1) || n2)
return 0;
for(i=3;i*i=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
(2)编写排序函数(冒泡排序、选择排序)
void bubbling(int *p,int n){//冒泡
int i,j,k;
for(i=0;in;i++)
for(j=1;jn;j++)
if(p[j]p[j-1])
k=p[j],p[j]=p[j-1],p[j-1]=k;
}
void select(int *p,int n){//选择
int i,j,k;
for(n--,i=0;in;i++){
for(k=i,j=k+1;j=n;j++)
if(p[k]p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
(3)查找函数,找到返回下标,否则返回-1
int find(int *p,int n,int x){//顺序
int i;
for(i=0;in;i++)
if(p[i]==x)
return i;
return -1;
}
int fihalf(int *p,int n,int x){//折半,升序为例
int l,r,m;
l=0,r=n-1;
while(m=(l+r)1,lr p[m]-x)
p[m]x ? l=m+1 : r=m-1;
return p[m]==x ? m : -1;
}
(4)插入函数,升序为例