null第15讲第15讲库函数、函数的定义与返回值 第七章 函数第七章 函数 在解决一个比较复杂的实际问题时,不可能把所有要完成的任务全都写在main函数中。这时,程序往往由一个main函数和若干个其它函数组成,每个函数各自完成相对独立的部分功能。 在前面的章节中,我们编写的程序都是由一个main函数来组成,在main函数中调用过scanf、printf等系统函数。模块化的程序设计方法函数间相互调用的示意 函数间相互调用的示意
main() f1() f11()
{ { {
┇ ┇ ┇
f1(); f11(); }
┇ ┇ f12()
f2(); f12(); {
┇ ┇ ┇
} } }
f2() f21()
{ {
┇ ┇
f21(); }
┇
}函数的分类函数的分类从函数形式
无参函数
有参函数
从用户角度
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
函数(库函数):由系统提供
用户自定义函数§7.1 库函数§7.1 库函数 库函数由系统提供,用户只要按照要求的
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
正确调用即可。不同的C编译系统提供的库函数有些不同。 使用库函数应注意的问题:
1、调用库函数时要用#include命令将相关的头文件包含进来。
如:调用数学函数,用#include "math.h" |
调用输入输出函数,用#include "stdio.h" |
2、库函数调用的一般形式:
函数名(参数表)
要注意函数的功能、参数的个数与类型、函数值的类型。
如:求平方根的函数sqrt的形式是:double sqrt(double x) 使用库函数应注意的问题(续)使用库函数应注意的问题(续)3、库函数调用以两种方式出现。
其一:出现在表达式中,即作为表达式的一部分参与运算。
如:计算y=x2.5+1.3,则通过以下语句调用来实现。
y=pow(x,2.5)+1.3;
其二:独立的语句,即调用函数后加一分号。
如:printf("*****\n");
4、调用库函数时,要注意参数的一些特殊要求。如三角函数要求自变量参数用弧度表示,开平方函数要求自变量参数的值大于或等于0。
§7.2 函数的定义和返回值§7.2 函数的定义和返回值函数返回值的类型
缺省int型
无返回值: void函数体函数类型 函数名(形参类型说明表)
{
说明部分
语句部分
}1. 函数定义的一般格式现代风格:多个形参说明之间要用逗号隔开没有形参时,这一对括号不能省略合法标识符函数的定义示例函数的定义示例例1 有参函数(现代风格)
int max(int x,int y)
{ int z;
z = x>y?x:y;
return(z);
}例3 无参函数
void printstar( )
{ printf("**********\n"); }
或
void printstar(void )
{ printf("**********\n"); }例4 空函数
void dummy(void)
{
}函数体为空
(留待以后补充)传统风格:函数类型 函数名(形参表)
形参类型说明
{
说明部分
语句部分
}例 有参函数(传统风格)
int max(x,y)
int x,y;
{ int z;
z = x>y?x:y;
return(z);
}传统风格:例 函数的定义 int max2(int x , int y) /*现代风格*/
{int max;
if(x>y) max = x;
else max = y;
printf("max(max2)=%d\n",max);
return(max);
}
void main()
{int a,b,max;
scanf("%d,%d",&a,&b);
max = max2(a,b)+100;
printf("max(main) =%d\n",max);
}例 函数的定义 形参和函数体中定义的变量只在函数被调用时才临时分配存储单元,当退出函数时,这些存储单元全部被释放(称为局部性,因而与其它函数中的变量同名不会引起混淆)。 函数与函数之间是平等的函数与函数之间是平等的void main()
{int max2(int x , int y)
{int z;
if(x>y) z=x;
else z=y;
return(z);
}
int a,b,max;
scanf("%d,%d",&a,&b);
max=max2(a,b);
printf("max=%d\n",max);
} 函数的定义是平行的,不能在一个函数的内部再定义其它函数。即每个函数都是一个相对独立的模块,不能在写某一个函数时又包含了另一个函数的定义(main函数的执行时有一点点小的特权!)。 2. 函数的返回值2. 函数的返回值返回语句
形式return(表达式);或 return 表达式; 或 return;
功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数
说明:
函数中可以有多个return语句,但只有其中的一个return语句能够得到执行
若函数中没有return语句,或者是一个不带表达式的return语句,则该函数结束时自动返回调用函数一个不确定的值
若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换
void型函数:明确说明函数没有返回值例 函数返回值类型转换int max(float x, float y)
{ float z;
z=x>y?x:y;
return(z);
}
main()
{ float a,b;
scanf("%f,%f",&a,&b);
printf("Max is %d\n", max(a,b));
}例 函数返回值类型转换例 函数可以有多个return语句 main()
{int a,b,max;
scanf("%d,%d",&a,&b);
max=max2(a,b);
printf("max=%d\n",max);
}
int max2(int x,int y)
{ int z;
if(x>y)
return x;
else
return y;
}例 函数可以有多个return语句注意:在C语言中,函数名不能被赋值,只能通过return语句返回一个值。 int max2(int x,int y)
{
max2= x>y?x:y ;
}例 函数带回不确定值 printstar()
{ printf("*********\n");
}
main()
{ int a;
a = printstar();
printf("a=%d\n",a);
}输出:a=10例 函数带回不确定值null#include
/*void*/ printstar()
{ printf("*****@@@##****\n");
}
main()
{ int a;
a=printstar();
a=printstar();
printf("a=%d\n",a);
}nullvoid printstar()
{ printf("*********\n");
}
main()
{ int a;
a = printstar();
printf("a=%d",a);
}编译错误!(VC++)error C2120: 'void' illegal with all types