第七章 函数
概述
模块化程序设计
基本思想:将一个大的程序按功能分割成一些小模块,
特点:
各模块相对独立、功能单一、结构清晰、接口简单
控制了程序设计的复杂性
缩短开发周期
避免程序开发的重复劳动
易于维护和功能扩充
开发方mp;
return; //不加
}
第九页,共二十七页。
函数的调用
调用形式
函数名(实参表); 或 函数名( );
说明:
实参必须有确定的值,且必须指定类型
实参与形参个数相等,类型一致,按顺序一一对应。若被调函数没有形参,则函数调用时也就没有实参。
若形参是基本类型的变量,则实参可以是常量、已赋值的变量、数组元素、表达式甚至是函数调用。
第十页,共二十七页。
main()
{ double s;
s=fac(5)+fac(10)+fac(13);
printf("s=%.0f\n",s);
}
double fac( unsigned n )
{ double p=;
int k;
for(k=1;k<=n;k++)
p=p*k;
return p;
}
(1)实参为常量
(2) 实参为已赋值的变量
long power (int x , int n)
{ long p=1; int k;
for(k=1;k<=n;k++)
p*=x;
return(p);
}
main( )
{ int a,b;
scanf("%d%d",&a,&b);
printf("ab=%ld", power(a,b) );
}
第十一页,共二十七页。
(3) 实参为数组元素
void comp (int v)
{ if(v>0) printf("%d ",v); }
main( )
{ int a[10]={-1,23,45,,-78,0,56,77,98,100,-99} , i;
for(i=0;i<10;i++) comp(a[i]);
}
第十二页,共二十七页。
(4)实参为表达式:
实参表求值顺序因系统而定,Turbo C 按自右至左的顺序。
main( )
{ int i=0 , n;
n=fun( i , i++ );
printf("n=%d",n);
}
fun ( int a , int b )
{ int c;
if(a<b) c=0;
else c=1;
return(c);
}
这种情况在printf也同样存在。
main( )
{ int i=8;
printf("%d\n%d\n%d\n%d\n", ++i, - -i, i++, i- - );
}
第十三页,共二十七页。
(5)实参为函数调用
int max (int a , int b)
{ if(a>b) return a;
else return b;
}
main()
{ int x,y,z,result;
scanf("%d%d%d",&x,&y,&z);
result=max( z , max(x , y) );
printf("maxmum=%d",result);
}
第十四页,共二十七页。
函数原型
对被调用函数要求:必须是已存在的函数
库函数: #include <*.h>
用户自定义函数: 函数声明
函数声明
一般形式:函数类型 函数名(形参类型 形参名,…..);或
函数类型 函数名(形参类型,…..);或
函数类型 函数名( );
作用:告诉编译系统函数类型、函数名、参数个数及类型,以便检验
函数定义与函数声明不同
函数说明位置:程序的数据说明部分(函数内或外)
下列情况下,可不作函数说明
若函数返值是char或int型,系统自动按int型处理
被调用函数定义出现在主调函数之前
第十五页,共二十七页。
main()
{ void add(float, float);
float a,b,c;
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("sum is %f",c);
}
float
(C语言课件)c7函数 来自淘豆网m.daumloan.com转载请标明出处.