第3章 自定义函数设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


/* LI3_2_3.C */ #include <stdio.h> #include define PI 3.14159 /* 计算圆面积函数 */ double areas(double r) { return PI*r*r; } /* 输出函数 */ void print(double x) { printf("area = %.2f\n", areas(x)); } int main( ) { print(7.89); /* 函数调用 */ print(3.23); print(1.21); print(4.43); print(0.254); print(2.26); print(6.43); return 0; }
14
void maxmum (int x,int y) { int z; z=(x>y) ? x : y ; printf("max=%d\n",z); }
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
15
函数的调用
函数名([实际参数表]) /* 作表达式 */ 或: 函数名([实际参数表]); /* 函数调用语句 */
《解析C程序设计(第2版)》第3章 自定义函数设计
21
(1)形参与实参占用不同的内存单元。 (2)单向传递。
实参存储空间 a b 复制 x y 形参存储空间
主调函数main()
被调函数max()
图3-2 函数参数“值传递”示意图
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
22
areas(7.89)); areas(3.23)); areas(1.21)); areas(4.43)); areas(0.254)); areas(2.26)); areas(6.43));
/* 函数调用作参数 */
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
17

《C语言程序设计》
第3章 自定义函数设计
本章内容
1
最大值和最小值问题
条件运算符 函数的定义 函数的调用 参数的传递 函数的返回 函数的声明
2
变量值交换问题 变量的作用域 变量的存储类型
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
2
Βιβλιοθήκη Baidu出问题
【例3-1】从键盘输入三个整数,求三个整数的 最大值和最小值。
2015-1-18 《解析C程序设计(第2版)》第3章 自定义函数设计 6
条件运算符和条件表达式
条件运算符是C语言唯一的三目运算符(即有三 个参与运算的量),用于条件求值,组成的表达 式称为条件表达式。其一般格式为: 表达式1 ? 表达式2:表达式3 条件运算符的运算规则是,如果“表达式1”的值 非0(为真),则该条件表达式的结果是“表达 式2”的值,否则,是“表达式3”的值。
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
18
#include <stdio.h> void maxmum(int x,int y) { printf("max=%d\n",(x>y) ? x : y)); /* 求x与y的最大值 */ } void minmum(int x,int y) { printf("min=%d\n",(x<y) ? x : y)); /* 求x与y的最小值 */ } void main() /* 主函数 */ { int a,b; /* 定义变量 */ scanf("%d,%d",&a,&b); /* 输入变量 a 和 b 的值 */ maxmum(a,b); /* 调用函数,此处函数作语句 */ minmum(a,b); /* 调用函数,此处函数作语句 */ }
2015-1-18 《解析C程序设计(第2版)》第3章 自定义函数设计 11
【例3-4】定义求两个整数的较大值函数。其源 代码如下: /* 函数功能:求较大值 函数参数:整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值:无 */ void max2num(int x,int y) { printf("max=%d\n",(x>y) ? x : y); }
}
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
13
注意事项
(1)函数不能单独运行,函数可以被主 函数或其它函数调用,也可以调用其它函 数,但是不能调用主函数。 (2)C规定,函数体的声明部分和执行部 分应严格划分,且声明部分放在函数体的 开始。
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
3
分析问题
求三个数中最小值和最大值
涉及到
函数的定义
函数的调用
函数的返回
参数的传递
函数的声明
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
4
实现代码
/* LI3_1_1.C */ #include <stdio.h> /* 求最大值函数 */ int max3num(int x,int y,int z) { int max; max=(x>y) ? x : y; max=(max>z) ? max : z; return(max); /* 返回函数值 */ } /* 求最小值函数 */ int min3num(int x,int y,int z) { int min; min=(x<y) ? ( x < z ? x : z) : ( y < z ? y : z); return min; /* 返回函数值 */ }
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
7
【例3-2】假设有一批圆盘,需要计算它们的面积。这些圆盘的半 径分别是:7.89、3.23、1.21、4.43、0.254、2.26、6.43 。根据前面介绍的知识,可以编写源代码如下: /* LI3_2_1.C */ #include <stdio.h> #define PI 3.14159 int main( ) { printf("area = %.2f\n",PI*7.89*7.89); printf("area = %.2f\n",PI*3.23*3.23); printf("area = %.2f\n",PI*1.21*1.21); printf("area = %.2f\n",PI*4.43*4.43); printf("area = %.2f\n",PI*0.254*0.254); printf("area = %.2f\n",PI*2.26*2.26); printf("area = %.2f\n",PI*6.43*6.43); return 0; }
2015-1-18 《解析C程序设计(第2版)》第3章 自定义函数设计 12
void main() { double x,s;
printf("input number:"); scanf("%lf",&x); s=sin(x); printf("sine of %lf is %lf\n",x,s);
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
19

/* LI3_1_2.C */ #include <stdio.h> /* 求最大值函数 */ void max3num(int x,int y,int z) { printf("max=%d\n",(x>y) ?((x>z) ?x :z) : ((y>z) ?y :z)); } /* 求最小值函数*/ void min3num(int x,int y,int z) { printf("min=%d\n",(x<y) ? ((x<z) ?x :z) : ((y<z) ?y :z)); } int main() { int a,b,c; printf("Please input a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); max3num(a,b,c); /* 函数调用语句 */ min3num(a,b,c); /* 函数调用语句 */ printf("Please input a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); max3num(a,b,c); /* 再次调用 */ min3num(a,b,c); /* 再次调用 */ return 0; }
【例3-5】调用函数完成计算两个整数平均值。其源代码如下: /* LI3_5.C */ #include <stdio.h> /* 计算平均值函数*/ float average(int x, int y) { float result; result=(x + y)/2; return result; } int main() { int a, b; float ave; printf("Input a,b:"); scanf("%d%d", &a,&b); ave = average(a,b); /* 函数调用作表达式 */ printf("ave = %f\n", ave); return 0; }
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
16

/* LI3_2_2.C */ #include <stdio.h> #include define PI 3.14159 /* 计算圆面积函数*/ double areas(double r) { return PI*r*r; } int main( ) { printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", return 0; }
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
20
参数的传递
教材中图3-1
参数传递 (主调函数main中) m=max3num(a,b,c);
形参x,y,z int max3num(int x,int y,int z) 参数传递 (被调函数)
实参a,b,c
2015-1-18
一般情况下,均使 用现代风格定义函 数,并且要指定函 数类型。
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
10
【例3-3】定义计算圆面积的函数。其源代码如 下: #include PI 3.14159 /* 函数功能:计算圆面积 函数参数:双精度实型r,存储半径 函数返回值:圆的面积 */ double areas(double r) { return PI*r*r; }
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
5
/* 主函数 */ int main() { int a,b,c,max,min; printf("Please input a,b,c:"); scanf("%4d,%4d,%4d ",&a,&b,&c); max=max3num(a,b,c); /* 函数调用作表达 式,并用变量保存最大值 */ printf("max=%d\n",max); min=min3num(a,b,c); /* 函数调用作表达 式,并用变量保存最小值 */ printf("min=%d\n",min); return 0; }
2015-1-18 《解析C程序设计(第2版)》第3章 自定义函数设计 8
函数的定义
函数类型 函数名([形式参数类型声明表])
{
声明部分 执行部分
}
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
9
传统风格的函数定义
函数类型 函数名(形式参数表) 形参类型说明 { 声明部分 执行部分 } 例: int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }
相关文档
最新文档