C语言 第八章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return(s);
} void main() { int n,k,c;
请输入 C(n,k): 6,4 C(n,k)=15
printf("请输入C(n,k):");
scanf("%d,%d",&n,&k);
c=fac(n)/(fac(k)*fac(n-k));
printf("\nC(n,k)=%d\n",c);
使用时实参和形参个数必须相等,对应 实参和形参的数据类型应该相同。
当实参和形参不一致时:(1)类型不同 (2)个数不同
另外,实参和形参可以同名,虽然是同 名也是两个不同的变量,占用不同的内存单 元,不会发生混浠。
2.函数的返回值
主调函数调用被调函数的目的: (1)完成一定的处理功能,无返回值; (2)得到一个计算处理结果,并向主调函数
ห้องสมุดไป่ตู้
C语言提供的标准库中存放着若干已定 义的函数,在使用这些库函数时,需要使 用 文 件 包 含 命 令 ( #include ) 将 带 有 该 函 数定义的头文件包含到当前程序;
而对于标准库函数未提供的功能则只 能由用户编写自定义函数来实现。
标准库函数的调用:
形式:函数名(参数表) 调用库函数有两种形式: (1)在表达式中:y=sqrt(x)+1.5 (2)作为独立的语句完成某种操作:
scanf(“%d”,&x); 注意:调用各个函数时,必须给予类型相同 的参数,并且最后的结果作为函数的返回值。
函数
C语言中所有函数的定义是并列的、独 立的。各个函数之间没有嵌套或从属的关 系。
建立函数即为函数的定义;使用函数即 为函数的调用。
调用其它函数的函数称为主调函数;被 其它函数所调用的函数称为被调函数。
main函数只能被系统调用,而对于其它 函数而言,main函数只能是主调函数。
8.1 函数
函数只能通过被调用才能执行。
8.1.1 函数的定义
自定义函数必须经过用户自行定义后,才能使用。 函数原型定义格式: 函数类型 函数名(类型 形参1,类型 形参2…) { 声明部分
执行部分 }
【例8.1】求3个字符中的最大值
声明的目的:
使编译系统在编译阶段对函数调用 进行合法性检查。即说明被调函数返回 值的类型,检查实参与形参的类型与个 数是否一致。
优点:
提高调试效率,把错误改正在初级 阶段;提高程序的可读性。
}
8.1.2 函数的参数和返回值
1.函数的参数
定义函数时的参数为形参,调用函数时的 参数为实参。
形参和实参不同:
当函数未被调用时,形参无确定值,只是形式 上的数。函数定义时形参不占内存,只有当函数 被调用时,形参才被分配内存单元,接收传递来 的实参值。
实参则有确定值。实参可以是常量、变量或表 达式。当调用函数时,实参值将被传递给对应的 形参。
返回一个返回值(用return语句)。
其格式如下:return (表达式); return 表达式; return;
执行过程:程序执行到return时,流程返回 到调用函数的地方(退出被调函数), 带回函数值。
【例8.3】编写子程序求两个数的和。
#include <stdio.h> float add(float x,float y) { float z;
对函数定义作进一步说明:
(1)函数类型 return void (2)函数名 同一程序中,函数的名称应
是唯一的。 (3)函数参数 分为有参、无参函数。 (4)形参说明 若是有参函数,在函数定义
时必须对参数类型进行说明。 (5)函数体 声明部分和执行部分。
若一个函数定义后,未被调用,它是 不能自己执行自己的。
(1)无返回值的函数应该定义void类型,否 则会返回一个不确定的值。
(2)函数返回值的类型应为定义函数时函数的 类型。若return语句中表达式值的类型与函数类 型不一致,系统会将其强制转换为函数类型。
(3)return语句的另一功能是结束被调函数 的运行,返回主调函数中继续执行后续语句。无返 回值的函数中也可以有return语句,可写为:
z=x+y; return(z); } main() { float a,b,c; printf("Input two floats:"); scanf("%f,%f",&a,&b); c=add(a,b); printf("Sum is %f\n",c); }
在设计带有返回值的函数时注意以下几点:
第8章 函数与变量
8.1 函数 8.2 变量的作用域和存储类型
根据结构化程序设计原则,一个较大的程 序要经过自顶向下的分析,逐步细化为若干模 块,每一模块完成某种功能,在C语言中由函 数来实现这些模块。
C语言源程序是由许多函数组成的。main 是由用户自己编写的,其中可以调用C提供的 库函数,也可以调用自己和他人编写的函数, 但总是从main()开始执行。
定义空函数: 函数类型 函数名() { }
空函数实际上什么也不做,但具有 可用在以后扩充函数的功能。
【例8.2】编程计算组合数C(n,k)=n!/(k!(n-k)!)
#include <stdio.h>
int fac(int m)
{ int i,s=1;
for(i=1;i<=m;i++)
s*=i;
return; 若没有return 语句,会执行到函数体最后的 “}”为止,但也无确定的函数值。
8.1.3 函数的声明和调用
1.函数的声明 一个函数调用另一个函数必须具备的前提是: (1)被调函数已存在。被调函数可以是库函 数,或者是用户自定义的函数。 (2)对于库函数,调用前要用#include命令 包含相应的头文件;对于自定义函数,要在主调 函数中对其进行声明。
#include <stdio.h> char max(char a,char b,char c) { char m;
m=a>b?a:b; m=m>c?m:c; return(m); } main() { char a,b,c,d; printf("Enter three characters:\n"); scanf("%c,%c,%c",&a,&b,&c); d=max(a,b,c); printf("Max is %c\n",d); }