十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。函数定义的一般形式如下:类型标识符 函数名(形参表列) // 这是函数首部 // 以下{ }内的是函数体 { 说明部分执行部分 } 举例说明如下: // 定义一个不带返回值的函数 // 函数功能:输出形参的值 void fun(int a, int b) { printf("%d, %d\n", a, b); } // 定义一个带返回值的函数 // 函数功能:返回2个整数数的最大值 int fun(int a, int b) { return ab ? a : b; }
我们提供的服务有:网站制作、网站建设、微信公众号开发、网站优化、网站认证、临川ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的临川网站制作公司
int
getdata(int
a,int
b)//括号是形式参数,前面int
是函数返回值类型
{
...
return
a;//返回值
}
...是实现的代码。
自己看看书上的函数定义和实现形式很容易的。
一个函数(function)是一个可以从程序其它地方调用执行的语句块。以下是函数定义格式:
type name ( argument1, argument2, ...) statement
说明:
type 是函数返回的数据的类型
name 是函数被调用时使用的名
argument 是函数调用需要传入的参量(可以声明任意多个参量)。每个参量(argument)由一个数据类型后面跟一个标识名称组成,就像变量声明中一样(例如,int x)。参量仅在函数范围内有效,可以和函数中的其它变量一样使用, 它们使得函数在被调用时可以传入参数,不同的参数用逗号(comma)隔开.
statement 是函数的内容。它可以是一句指令,也可以是一组指令组成的语句块。如果是一组指令,则语句块必须用花括号{}括起来,这也是我们最常见到情况。其实为了使程序的格式更加统一清晰,建议在仅有一条指令的时候也使用花括号,这是一个良好的编程习惯。
示例:每一个C语言程序有且只有一个main函数,本身main就是一个函数。结合上面的格式,自己理解一下。
int main()
{
return 0;
}
在C语言中,一个标准的函数定义语句块必须包含函数返回值的类型标识符、函数名、形参类型及数量、函数体、返回值表达式。如果函数返回值类型为 void (即无返回值),则在两个大括号之间不能写带有返回值表达式的 return 语句,否则编译器就会报错。你写的 test 函数返回值类型为 void,而你在函数定义语句块内写下了 return 语句,编译器自然会报错了。
你可以将这个函数修改为以下形式:
int test(int n)
{
int m = n / 2;
return m;
}
1、编写函数func1,实现求两个数的最大公约数。
1:
int
fuc1(int
a,int
b)
{
if(a%b==0)
return
b;
return
fuc(b,a%b);
}
int
t=fuc1(a,b);//t为a,b最大公约数。
2、编写函数func2,实现求两个自然数之间的奇数的和。
2
int
fuc2(int
a,int
b)
{
int
sum=0;
int
i;
for(i=a;i=b;i++)
if(i%2==1)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t为a,b间所有奇数之和。
3、编写函数func1,实现求一个自然数的阶乘(要求用递归的方法)。
int
fuc1(int
k)
{
if(k==1)
return
1;
return
k*fuc(k-1);
}
int
t=fuc1(a);//t为a的阶乘.
4、编写函数func2,实现求两个自然数之间的偶数的和。
int
fuc2(int
a,int
b)
{
int
sum=0;
int
i;
for(i=a;i=b;i++)
if(i%2==0)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t为a,b间所有偶数之和。
(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)插入函数,升序为例