1、函数调用函数调用哈现代服务职哈现代服务职 宋琳宋琳Version 1.0Version 1.0函数如何定义函数如何定义?回回 顾顾函数类型函数类型 函数名函数名(形参类型形参类型1 形参名形参名1,形参类型形参类型2,形参名形参名2)函数体函数体31、int sqr(int x)int y;y=x*x;printf(“y=%d”,y);例题例题:2、void displayDiscount()float discount,price,discount_amt;scanf(“%f”,&discount);scanf(“%f”,&price);discount_amt=discount*price
2、;printf(“Discount amount is%f”,discount_amt);4函数调用函数调用目标:目标:掌握函数调用的方式。掌握函数调用的方式。5例例 1:问题:问题:显示给定数字的显示给定数字的 4 次方。(如果给定数字为次方。(如果给定数字为5,则输出结果为则输出结果为54的结果)的结果)1.接受一个给定数字接受一个给定数字 num。2.使用使用 pow()内置函数,计算内置函数,计算 num 的的 4 次方。次方。3.显示结果显示结果。算法算法6输输入入数数据据调调用用函函数数输输出出结结果果内存:内存:num调用:调用:pow(3,4)计算计算3*3*3*3返回结果:返
3、回结果:8137先显示消息先显示消息“Happy New Year”,然后显示,然后显示“Have a prosperous new year!”,这两个消息下面都显示一条用,这两个消息下面都显示一条用“=”符号形成的水平线。符号形成的水平线。1.显示消息显示消息“Happy New Year”。2.调用子程序调用子程序 display,显示一条水平线。,显示一条水平线。3.显示显示“Have a prosperous new year!”。4.调用子程序调用子程序 display,以显示一条水平线。,以显示一条水平线。子程序子程序 display:1.使用使用“=”符号显示水平线。符号显示水
4、平线。2.返回到调用程序。返回到调用程序。算法算法示例示例 2问题:问题:8示例示例 2 工作原理工作原理Happy New Year=Have a prosperous new year!=91.使用子程序使用子程序 get_age,接受第一个人的年龄,接受第一个人的年龄 age1。2.使用子程序使用子程序 get_age,接受第二个人的年龄,接受第二个人的年龄 age2。3.使用子程序使用子程序 get_age,接受第三个人的年龄,接受第三个人的年龄 age3。4.检查检查 age1 是否大于是否大于 age2 和和 age3。5.如果是,则将年龄为如果是,则将年龄为 age1 的那个人显
5、示为年龄最大者。的那个人显示为年龄最大者。示例示例 3接受三个人的年龄,找出年龄最大者。接受三个人的年龄,找出年龄最大者。问题:问题:算法算法106.否则,检查否则,检查 age2 是否大于是否大于 age1 和和 age 3。7.如果是,则将年龄为如果是,则将年龄为 age2 的那个人显示为年龄最大者。的那个人显示为年龄最大者。8.否则,检查否则,检查 age3 是否大于是否大于 age1 和和 age2。9.如果是,则将年龄为如果是,则将年龄为 age3 的那个人显示为年龄最大者。的那个人显示为年龄最大者。子程序子程序 get_age:1.接受某人的年龄。接受某人的年龄。2.将年龄值返回给
6、调用程序。将年龄值返回给调用程序。示例示例 3接受三个人的年龄,找出年龄最大者。接受三个人的年龄,找出年龄最大者。问题:问题:算法算法11示例示例 3 工作原理工作原理ageage1age2age3Enter age:34_3412示例示例 3 工作原理工作原理ageage1age2age3Enter age:45_45Enter age:343413示例示例 3 工作原理工作原理ageage1age2age3Enter age:22_22Enter age:343445Enter age:4514示例示例 3 工作原理工作原理age1age2age3Person having age 45 is the eldest22Enter age:453445Enter age:22Enter age:3415总结总结n函数函数就是程序中的单元或模块。就是程序中的单元或模块。n可以在程序中可以在程序中多次多次调用它们,以解决某个特定的调用它们,以解决某个特定的任务。任务。n函数调用时,程序转到函数,函数执行结束后,函数调用时,程序转到函数,函数执行结束后,返回到调用处继续向下执行。返回到调用处继续向下执行。