C语言项目化教程(基于智能制造软件)教案 项目六任务4根据驾驶员的工作年限,求工资的数额(嵌套和递归).doc

C语言项目化教程(基于智能制造软件)教案 项目六任务4根据驾驶员的工作年限,求工资的数额(嵌套和递归).doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE

课题

任务6.4根据驾驶员的工作年限,求工资的数额(嵌套和递归)

课型

讲练

授课班级

授课时数

2

教学目标

掌握递归函数的算法

运用软件开发方法提出问题,分析问题的能力;

运用各种开发工具调试程序。

教学重点

递归函数的算法

教学难点

递归函数的算法

学情分析

学生前面已经学习的函数的方法,在讲解循环中也引入了递归函数,此个递归函数也许会和循环讲解时产生问题,此处多注意他们的问题。

教学效果

教后记

任务6.4根据驾驶员的工作年限,求工资的数额(嵌套和递归)

6.4.1任务目标

已知驾驶员的工资和工作年限相关,第一年每月的工资为5000元,以后每年增长10%,求第12年每月的工资。程序运行结果如图6-40所示。

图6-40程序运行结果(上图已修改)

6.4.2知识储备

1.函数的嵌套调用

在调用一个函数的过程中又调用另一个函数称为“函数的嵌套调用”。

示例1,函数的嵌套调用的示例代码如下:

#includestdio.h

voidf1();

voidf2(intn);

voidmain()

{

f1();

}

f1()

{

f2(5);

}

voidf2(intn)

{inti;

for(inti;i=n;i++)

rintf(“*”);

}

示例1的函数嵌套调用的示意图如图6-41所示。

图6-41函数的嵌套调用的示意图

2.函数的递归调用

在调用一个函数的过程中,又出现直接或间接地调用该函数本身称为“函数的递归调用”。

示例2:函数的递归调用的应用。

#includestdio.h

voidf(intn)

{

if(n==0)return;

printf(%d\n,n);

f(--n); //直接递归调用

}

voidmain()

{

intnum=5;

f(num);

}

6.4.3典型案例

典型案例1:某集团对驾驶员的工资根据是否出现交通事故而制定,如果没有出现交通事故,则驾驶员下一个月的工资会增加上一个月工资的10%。一个驾驶员1月的工资为3000元,假设该驾驶员全年都没有出现交通事故,则计算这个驾驶员全年的工资(备注一个函数求和,一个函数求每个月的工资)。

典型案例1嵌套调用示意图如图6-42所示。

图6-42典型案例1嵌套调用示意图

代码如下:

#includestdio.h

doublesalaryincrease(intmonth)

{

doublesalary=3000;

inti;

for(i=2;i=month;i++)

salary=salary*1.1;

returnsalary;

}

doublesum_salary(intmonth)

{

doublesum=0;

for(i=1;i=12;i++)

sum=sum+salaryincrease(i);

returnsum;

}

voidmain()

{

intmonth=12;

printf(本年一共领取了%.2f工资,sum_salary(12));

}

典型案例1的运行结果如图6-43所示。

图6-43

图6-43典型案例1的运行结果

1)算法分析

根据题意可知

age(5)=age(4)+2

age(4)=age(4)+2

age(3)=age(2)+2

age(2)=age(1)+2

age(1)=25

2)转换成数学公式总结

典型案例2递归调用示意图如图6-44所示。

图6-44典型案例2递归调用示意图

代码如下:

#includestdio.h

intage(intn){

if(n==1)

return25;

else

returnage(n-1)+2;

}

voidmain()

{

intn=5;

printf(第5个人是%d岁,age(5));

}

典型案例2的运行结果如图6-45所示。

小贴士:

当运用递归时,建议先换成上述的数学公式总结,再按照格式完成递归实现。

典型案例3:用递归方法求10!。

算法分析如下。

10!=9!*10。

9!=8!*7。

……

2!=1!*1。

代码如下:

#i

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档