文档介绍:第八章函数
重点:
了解模块化程序设计的思想
熟悉掌握函数的使用
了解变量的作用范围
[例1:] 函数调用
main()
{ printf("This is a test!\n");
printstar();
print_message();
printstar();
}
printstar()
{
printf(“* * * * * * * * * * * * \n”);
}
print_message()
{
printf(“ How do you do!\n”);
}
(function)介绍
说明:
1.  一个源程序文件有一个或多个函数组成。
2.  一个C程序可以有多个源程序文件组成。
3.  任何C程序都从main函数开始执行,当main的最后一条指令执行完,程序结束.
4.  所有函数都是独立的,可以互相调用,main不能被调用。
5.  函数分为标准函数和用户自定义函数。
6.  函数分为无参函数和有参函数。
为什么要include 文件?
printf();scanf(),putchar();getchar();puts();gets()。
函数定义及函数声明
(1). 无参数函数的定义
类型标识符函数名( )
{ 声明部分
语句
}
(2). 有参数函数的定义
类型标识符函数名(形式参数表列)
{声明部分
语句
}
形式参数表列:对形式参数的说明;有两种方法:
① int max(int x , int y)
{
函数体;
}
② int max(x , y)
int x,y;
{
函数体;
}
注意:在①中x,y 的数据类型一致,也不能写成int max(int x,y)的型式。
(3) 可以有空函数
void 函数名( 参数)
形参和实参
形参:在函数定义时,函数名括号后面的变量名。
实参:在函数被子调用是,函数名括号后面的表达式。
(2) 调用函数和被调用函数
(3)函数的值。
例2: 求一个整数的绝对值
int absolute_value(int x)
{ return(X>0=? X: -X);
}
main()
{ int x,y;
printf(“please input a int x=”);
scanf(“%d”,&x);
y=value(x);
printf(“\n %d absolute is %d\n”,x,y);
}
(4)说明:
①实际参数可以是变量、常量、表达式,它们的值传给形式参数。实参对形参传递的是值;
②形参在未调用时,并没有分配到内存单元,只有被子调用时才分配内存单元,调用完后释放内存单元。
③实参与形参的个数、类型要匹配。
④实参与形参是自左向右一一配对的。
⑤形参在函数中被改变并不影响实参的值。
例3:float max(float x,float y,float z)
{float t;
t=x>y ? x : y;
t=t>z?t : z;
return(t);
}
main()
{ float x,y,z,maxvale;
printf(“please input a x,y,z :”);
scanf(“%f%f%f”,&x,&y,&z);
maxvale=max(x,y,z);
printf(“\n the max is %f\n”, max);
}
若要从函数中返回一个值,在函数中要用return语句;
格式:return ( 表达式);
return;
程序执行到return语句时就退出被调用的程序,返回到被调用的语句处。
例. void spc(int n)
{ int I;
for ( I=0;I<n;I++)
printf(““);
return;}
例4. 解下述表达式
x*x-x+1 (x<0)
y=
x*x*x+x+3 (x>=0)
float fx(float x)
{ if (x<0)
return(x*x-x+1);
else
return(x*x*x+x+3);
}
main()
{ float x,y;
printf(“please input a x :”);
scanf(“%f”,&x);
y=fx(x);
printf(“\n whten x is %f”,x);
printf(“\n the y is %f”,y