猴子吃桃子问题 大数据结构课程设计
猴子吃桃子问题 大数据结构课程设计

标准文档目录1、需求分析 (1)2、概要设计 (1)2.1.用数组数据结构实现上述求解 (1)2.2.用链数据结构实现上述求解 (1)2.3 用栈数据结构实现求解 (1)2.4 用递归实现上述求解 (2)3、运行环境 (2)3.1 硬件环境 (2)3.2软件环境 (2)4、详细设计 (2)4.1系统流程图 (2)4.2用数组数据结构实现上述求解 (3)4.3用链数据结构实现上述求解 (4)4.4用栈数据结构实现求解 (5)4.5用递归实现上述求解 (6)5、调试分析 (7)6、运行结果 (7)课程设计总结 (8)参考文献 (9)附录: (9)1、需求分析1、猴子吃桃子问题有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:1) 采用数组数据结构实现上述求解2) 采用链数据结构实现上述求解3) 采用栈实现上述求解4) 采用递归实现上述求解2、概要设计2.1.用数组数据结构实现上述求解在taozi函数中定义一个一维数组,分别存储每天的桃子个数,根据题目的内容找出各个数之间的关系,用数组元素表示出来,根据用户输入要计算哪一天的桃子,用for循环控制结束。
在main函数中让用户输入要计算的哪一天,调用taozi 函数,以便用户可查出任意一天的桃子个数,用switch语句判断用户要执行的功能,然后用while循环控制,直到用户输入0为止。
2.2.用链数据结构实现上述求解先写出预定义常量和类型,写出结点的类型定义,创建结点,初始化链表,定义变量并初始化,找出结点与其后继结点之间的联系,然后在主函数中控制。
2.3 用栈数据结构实现求解本部分包括预定义常量和类型,顺序栈的定义,InitStack函数,Push函数,和main函数,在InitStack函数构造一个空栈,在Push函数中调用该函数,并在其中编写控制栈顶指针和栈底指针移动的语句,找出指针所指向的数据之间的关系,在main函数中编写控制循环结束的语句,最后再用main函数去调用Push函数。
数据结构与算法 猴子吃桃

课程设计说明书课程名称:数据结构与算法设计题目:猴子吃桃问题院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:2010年6月18日课程设计任务书设计题目猴子吃桃问题学生姓名蒋耀辉所在院系计算机科学与信息工程系专业、年级、班08软件工程班设计要求:分别用以下三种方法实现对猴子吃桃问题的求解:(1)数组数据结构(2)链表数据结构(3)递归问题描述如下:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第十天就只剩下一只桃子,求出它们第一天摘了多少桃子。
学生应完成的工作:以小组为单位,分工合作完成以下任务(1)编写程序实现对上述猴子偷桃问题的求解并运行出结果;(2)在制定期限内提交程序并完成答辩;(3)提交出详细的课程设计说明书。
参考文献阅读:(1)严蔚敏,吴伟民.数据结构(C语言版)—北京:清华大学出版社2007IBSN978-7-302-14751-0;(2)谭浩强.C语言程序教程—北京:清华大学出版社2007.7 IBSN978-7-302-15157-9;(3)(美)(Liang,Y.D)C++程序设计—北京:机械工业出版社 2008.5 IBSN978-7-111-23996-3。
工作计划:1、确定自己负责模块的作用2、写出模块算法3、写出源代码4、验证与修改任务下达日期:2010 年 6 月7 日任务完成日期:2010 年 6 月18 日指导教师(签名):学生(签名):(设计题目)摘要:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:1)采用数组数据结构实现上述求解2)采用链数据结构实现上述求解3)采用递归实现上述求解关键词:数组链递归目录1. 设计背景 (1)1.1时代背景 (1)1.2能力要求 (1)2.设计方案 (1)2.1初步分析 (1)2.2 问题细化 (2)3. 方案实施 (2)3.1初步探讨 (2)3.2 详细过程 (2)4.结果与结论 (3)5. 收获与致谢 (3)6. 参考文献 (3)7. 附件 (4)源程序 (4)1. 设计背景1.1时代背景数据结构是由数据元素依据某种逻辑联系组织起来的。
大班数学教案猴子请吃桃子

大班数学教案猴子请吃桃子一、教学目标•了解数字0-10的拼写和数量关系•掌握数字0-10的顺序和大小关系•能够正确使用数字0-10进行简单的计数和比较二、教学重点•数字0-10的认识和运用•数字的顺序和大小关系的理解•数字的计数和比较能力的发展三、教学准备•教具:十个桃子模型、大型数字卡片、小组活动材料•资源:数字0-10的图片和卡片四、教学过程1. 导入新知首先,教师向学生展示一幅数字0-10的图片,并请学生集体说出每个数字的名称。
然后,教师提问学生,猜一猜这些数字的拼写是什么。
鼓励学生积极参与回答。
2. 认识数字教师拿出十个桃子模型,独立展示给学生看,并用大型数字卡片一一配对数字和桃子。
教师重复几次,让学生逐渐熟悉数字与数量的对应关系。
3. 掌握数字顺序和大小关系教师随机出示几个数字卡片,让学生按照数字的顺序排列,并解释数字的大小关系。
教师可以使用引导性问题帮助学生理解,例如:“数字2和数字6哪个更大?”鼓励学生用手指指向较大的数字,并给予肯定的反馈。
4. 数字计数和比较的练习教师组织小组活动,每组分发一些数字卡片和小组活动材料。
学生们通过比较数字的大小和计数桃子的数量,完成小组活动。
教师在活动过程中进行巡视和指导。
5. 总结和评价教师带领学生进行本堂课的总结和评价。
询问学生们数字认识、数字顺序和大小关系的情况。
鼓励学生们表达自己的观点,相互交流,并给予积极的评价和鼓励。
五、课后拓展教师可以安排一些数字游戏或练习,以巩固学生对数字0-10的认识和运用能力。
例如,数字拼图游戏、数字比较游戏等。
六、教学反思本节课通过多种教学手段,帮助学生认识数字0-10的拼写和数量关系,并掌握数字的顺序和大小关系。
通过小组活动,学生们积极参与,增强了数字计数和比较的能力。
在今后的教学中,可以进一步开展数字的拆分和组合活动,以提高学生的数学思维能力和数学解决问题的能力。
C语言程序设计例子(3):猴子吃桃问题

C语⾔程序设计例⼦(3):猴⼦吃桃问题题⽬:猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个 第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。
以后每天早上都吃了前⼀天剩下 的⼀半零⼀个。
到第10天早上想再吃时,见只剩下⼀个桃⼦了。
求第⼀天共摘了多少。
思路分析:采⽤逆向思维,从后往前推断,发现其中有相同的地⽅,即出现递推公式,可以采⽤递归⽅法。
令S10=1,容易看出S9=2(S10+1),简化⼀下S9=2S10+2S8=2S9+2…..Sn=2Sn+1+2下⾯我将解决这个问题。
(第⼀种为普通循环⽅式,第⼆种为递归⽅式)⽅法⼀:while#include<stdio.h>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("the total is %d\n",x1);}⽅法⼆:递归#include<stdio.h>int sumPeach(int day);int main(){int sum;sum=sumPeach(1);printf("%d",sum);}int sumPeach(int day){if(day==10){return1;}elsereturn2*sumPeach(day+1)+2;}。
数据结构实现猴子吃桃

《数据结构》课程设计报告(猴子吃桃)学院:东方科技学院班级:08级信息工程1班学号:200841919116姓名:朱旭指导教师:贺细平老师目录一、题目概要 (1)二、基本概念和要点 (1)三、举例分析 (3)四、设计分析 (10)五、运行结果 (10)六、总结体会 (11)课程论文题目学生:朱旭(东方科技学院08级信息工程一班,学号200841919116)一、题目概要实现课题——猴子吃桃摘要:猴子吃桃这一典型的数学课题,其主要实现的过程是将其数学课题公式化,用一些简单的数据定义、初使化、通过一系列的条件判断和循环用来实现学数公式的计算机化。
通过C语言基础分析和数据结构初步了解,我们使用C语言,利用C和数据结构的结合使用,让我们在短时间内建立起对数据结构的进一步认识。
然后,形成正确的对算法和优有个的理解观念。
关键词:C语言的基本了解,数据结构的基本了解, 数据中数组的使用,用C语言实现数据链表题目有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求 1>链数据结构实现上述求解2>数组数据结构实现上述求解3>递归实现上述求解二、基本概念和要点数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。
数据结构的两大类逻辑结构和四种常用的存储表示方法。
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。
这一段比较重要,用自己的语言来说就比如一个表 ( 数据库 ),我们就称它为一个数据结构,它由很多记录 ( 数据元素 )组成,每个元素又包括很多字 ( 数据项 )组成。
猴子吃桃子问题

L=(LinkList *)malloc(sizeof(LinkList));
while(1){
printf("\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
int k;
scanf("%d",&k);
switch(k){
case 1:
for(i=0;i<=10;i++){
N=recursion(i);
printf("第 %d 天,还剩桃子 %d 个\n",i,N);
}
printf("桃子原来的总数为:%d",a[0]);
break;
case 3:
L=CreatList(); DisplayList(L);
printf("桃子原来的总数为:%d\n",L->data);
p->next=L;
L=p;
}
return L;
}
void DisplayList(LinkList *L){
LinkList *p;
int i=0;
p=L;
while(p!=NULL){
printf("第%d 天,还剩桃子%d 个\n",i++,p->data);
大班数学教案小猴吃桃

大班数学教案:小猴吃桃一、教学目标学习小学数学的基础概念,包括数的排序,数的加减法运算,数的比较大小,培养学生的逻辑思维和观察分析能力。
二、教学准备•白板、黑板和彩色粉笔•数字卡片和运算符卡片•桃子图片或桃子模型三、教学内容1.数的排序–教师出示数字卡片,要求学生按照从小到大或从大到小的顺序排列。
–学生使用运算符卡片进行比较大小。
–教师引导学生观察规律,总结数的排序方法。
2.数的加法运算–教师出示两个数字卡片,要求学生计算两数之和,并使用运算符卡片给出计算步骤。
–学生分组进行小组竞赛,比赛谁先计算出答案。
–教师引导学生总结加法运算的规则,并提供简单案例进行练习。
3.数的减法运算–教师出示两个数字卡片,要求学生计算两数之差,并使用运算符卡片给出计算步骤。
–学生进行小组合作,相互检查计算结果的准确性。
–教师引导学生总结减法运算的规则,并提供简单案例进行练习。
4.数的比较大小–教师出示两个数字卡片,要求学生比较两数的大小,并使用运算符卡片给出比较结果。
–学生进行个人练习,根据大小关系写出正确的数学符号。
–教师引导学生掌握比较大小的方法,并提供趣味练习。
四、教学步骤1.导入新知识–教师展示一张桃子图片并向学生提问:“如果有五个小猴子,每天吃掉一个桃子,还剩几个桃子?”–学生思考并回答问题。
2.引入数的排序–教师出示数字卡片1、6、3、2、8,要求学生按照从小到大的顺序排列。
–学生分组进行排序,并进行展示。
3.学习数的加法运算–教师出示数字卡片3和2,要求学生计算3+2。
–学生使用运算符卡片给出计算过程,并回答计算结果。
4.学习数的减法运算–教师出示数字卡片5和2,要求学生计算5-2。
–学生使用运算符卡片给出计算过程,并回答计算结果。
5.学习数的比较大小–教师出示数字卡片4和7,要求学生比较两数的大小。
–学生使用运算符卡片给出比较结果,并解释比较过程。
6.拓展练习–教师出示更多的数字卡片,要求学生进行排序、加法运算、减法运算和比较大小练习。
猴子吃桃问题

软件综合课程设计猴子吃桃问题学生搭配问题二〇一四年六月《猴子吃桃子课程设计》报告一、问题陈述猴子吃桃子问题:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
二、需求分析要求:1.采用数组数据结构实现上述求解;2.采用链数据结构实现上述求解;3.采用递归实现上述求解。
三、概要设计四、详细设计猴子每天都吃当前桃子的一半多一个,假设今天还有n个桃子,则前一天就有(n+1)*2个桃子。
又已知第十天只剩下一个桃子,则可代入以上公式求出第九天的桃子数,以此类推求下去便可得到第一天的桃子数。
1.采用数组数据结构实现上述求解声明一个长度为10的整形数组arr[10],分别存放各天猴子吃前的桃子数。
下图所示arr[0] arr[1]arr[2]arr[3] arr[4]arr[5]arr[6]arr[7] arr[8]arr[9]先将arr[9]赋值为1,用一个循环语句for (int i=9; i>0; i--){ arr[i-1]=2*(arr[i]+1); }为其余各数组元素赋值,则数组元素arr[0]的值便是该问题的解。
2.采用链数据结构实现上述求解 建立单链表,声明一个类用来对链表的结点指针进行定义,在初始化函数中利用头插法创建具有10个元素的链表。
那么N 10便是要求问题的解。
3.采用递归实现上述求解利用一个递归函数来进行求值:依据返回值来记录每一天剩余桃子情况。
int UseRecursion(int n) {int m; if(n==1) m=1; elsem=(UseRecursion(n-1)+1)*2; return m; }五、程序代码1.头文件“MEP.h “ #ifndef MEP_H #define MEP_H#include<iostream> #include<malloc.h> using namespace std; typedef struct LNode {int data;struct LNode *next; }LNode,*LinkList; void UseLinkList();int UseRecursion(int n);int Swicth();void Diaoyong();void UseArray();void Fenxi();void LinkListAnalysis();void RecursionAnalysis();void ArrayAnalysis();static unsigned short arr[10]={0,0,0,0,0,0,0,0,0,1};#endif MEP_H;2.主函数void Diaoyong();void main(){Diaoyong();}3.Diaoyong:调用函数#include"MEP.h"void Diaoyong(){cout<<" --猴子吃桃子问题-- \n\n";cout<<"有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一\n";cout<<"半且再多吃一个,到了第10天就只余下一个桃子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
标准文档目录1、需求分析 (1)2、概要设计 (1)2.1.用数组数据结构实现上述求解 (1)2.2.用链数据结构实现上述求解 (1)2.3 用栈数据结构实现求解 (1)2.4 用递归实现上述求解 (2)3、运行环境 (2)3.1 硬件环境 (2)3.2软件环境 (2)4、详细设计 (2)4.1系统流程图 (2)4.2用数组数据结构实现上述求解 (3)4.3用链数据结构实现上述求解 (4)4.4用栈数据结构实现求解 (5)4.5用递归实现上述求解 (6)5、调试分析 (7)6、运行结果 (7)课程设计总结 (8)参考文献 (9)附录: (9)1、需求分析1、猴子吃桃子问题有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:1) 采用数组数据结构实现上述求解2) 采用链数据结构实现上述求解3) 采用栈实现上述求解4) 采用递归实现上述求解2、概要设计2.1.用数组数据结构实现上述求解在taozi函数中定义一个一维数组,分别存储每天的桃子个数,根据题目的内容找出各个数之间的关系,用数组元素表示出来,根据用户输入要计算哪一天的桃子,用for循环控制结束。
在main函数中让用户输入要计算的哪一天,调用taozi 函数,以便用户可查出任意一天的桃子个数,用switch语句判断用户要执行的功能,然后用while循环控制,直到用户输入0为止。
2.2.用链数据结构实现上述求解先写出预定义常量和类型,写出结点的类型定义,创建结点,初始化链表,定义变量并初始化,找出结点与其后继结点之间的联系,然后在主函数中控制。
2.3 用栈数据结构实现求解本部分包括预定义常量和类型,顺序栈的定义,InitStack函数,Push函数,和main函数,在InitStack函数构造一个空栈,在Push函数中调用该函数,并在其中编写控制栈顶指针和栈底指针移动的语句,找出指针所指向的数据之间的关系,在main函数中编写控制循环结束的语句,最后再用main函数去调用Push函数。
2.4 用递归实现上述求解这种方法跟上述几种不同,在函数的执行函数的过程中,需多次进行自我调用,递归函数的运行过程类似与多个函数的嵌套调用,只是调用函数和被调用函数是同一个函数,从主函数开始调用,一次更深一层,退出时一步一步返回到上一层,所以不需写控制循环语句,不需要写控制循环语句,比上几种方法简单点。
3、运行环境3.1 硬件环境PC3.2软件环境(1)Windows XP(2)Microsoft Visual C++6.04、详细设计4.1系统流程图4.2用数组数据结构实现上述求解//计算桃子的个数void taozi(int n,int m){int day[10];//初始化变量,用数组元素分别存储每天的桃子个数 int i;//控制循环执行的次数day[0]=n;//最后一天的桃子个数for(i=0;i<10-m;i++)day[i+1]=2*(day[i]+1);//相邻元素之间的关系printf("第%d天的桃子为:%d\n",m,day[10-m]);}void main(){int m;//用户要计算的是第几天printf("请输入要求第几天剩下的桃子:\n");scanf("%d",&m);taozi(1,m);//调用while(1){int j;//循环控制条件printf("请输入j的值 0:退出 1:继续:\n");scanf("%d",&j);switch(j){//当j=1时,用户可以输入多次想要的数值case 1:printf("请输入要求第几天剩下的桃子:\n");scanf("%d",&m);taozi(1,m);break;//跳出//当j=0时,跳出switch结构case 0:return;break;//当用户输入除0和1以外的数值时,会让你重新输入,直到输入正确为止default:printf("输入有误请重新输入!");}}}4.3用链数据结构实现上述求解//预定义常量和类型#define NULL 0//单链表的存储结构typedef struct LNode{int data;//数据域struct LNode *next;//指针域}LNode;LNode *L;LNode *p,*s;//计算桃子的个数int CreateList_L(int e,int m)//e是第十天的桃子的个数,m是将要计算的是第几天{int i;L=(LNode *) malloc(sizeof(LNode));//生成新结点p=(LNode *) malloc(sizeof(LNode));L->next=NULL;//创建一个带头结点的单链表L->next=p;//插入到表头L->next->data=e;//初始化第一个结点for(i=m-1;i>0;i--){s=(LNode *) malloc(sizeof(LNode));p->next=s;s->data=2*(p->data+1);//结点与下一结点之间的联系 p=s;//指针P总是指向最后一个结点s->next=NULL;}printf("第%d天的桃子为:%d\n",11-m,p->data);}4.4用栈数据结构实现求解//储存空间初始分配量#define STACK_INIT_SIZE 100//顺序栈的定义typedef struct{int *base;//栈底指针int *top;//栈顶指针int stacksize;//当前已分配的存储空间}SqStack;SqStack s;//构造一个空栈int InitStack(){s.base=(int *) malloc(STACK_INIT_SIZE * sizeof(int));if(!s.base)exit (OVERFLOW);//存储分配失败s.top=s.base;//刚开始栈为空s.stacksize=20;return OK;}//计算桃子个数的函数void Push(int e,int m)// m是要计算的是第几天{int i;InitStack();*s.top++=e;//给栈底元素初始化for(i=0;i<10-m;i++){*s.top=2*(*(s.top-1)+1);//栈顶元素和刚插入的元素之间的关系 s.top++;//每插入一个栈顶元素,指针就要自加1}printf("第%d天的桃子为:%d\n",m,*(s.top-1));}4.5用递归实现上述求解int i=9;//初始化全局变量//递归函数int taozi(int x){int y;while(i>0){y=2*(x+1);i--;//循环控制条件taozi(y);printf("%d\n",y);}}5、调试分析1 在用链数据结构实现时,运行时没有显示错误,但输出不是预测的结果,代码如下:for(i=m-1;i>0;i--){s=(LNode *) malloc(sizeof(LNode));p->next=s;s->data=2*(p->data+1);s->next=NULL;}在指针的移动时,由于p总是第一个结点,在for循环前已经被赋值,指针P 应该总是指向最后一个结点的,所以在这句s->next=NULL前加上一句p=s就行了,就能输出正确结果。
2 在生成新结点时,一定要用强制类型转换,要不就要出错。
不能把s=(LNode *)malloc(sizeof(LNode))写成s=(LNode) malloc(sizeof(LNode));因为它们不属于同一类型。
3 在用栈数据结构实现的过程中,虽然只有一个错误,但却显示了好多错误。
主要原因是由于一个参数是在main函数中定义的,但却被其它函数调用,只要把该参数定义成全局变量就行了。
4 在用while循环时,由于控制条件的不恰当导致的错误,不过只要再认真分析一下,就正确了。
5 还有些其它方面的错误,不过只要看一眼,就能改正,是粗心造成的。
6、运行结果链数组和栈实现结果:递归实现结果:课程设计总结通过这一周的实践学习,我认识到学好计算机要重视实践操作,不仅仅是学习数据结构,以及其它的计算机方面的知识都要重在实践,很多以前学过的东西,在运用时都不能很熟练,也说明理论知识和实践之间的差别。
这就告诉了我们在以后的学习过程中要培养自己的动手能力,要将学过的知识转化为实践。
作为一个计科专业的学生,通过这周的学习,使我更加明白了动手能力的重要性。
在这次的课程设计中,我不断地去找书本知识和查阅其它有关资料,不仅巩固了对课本知识的掌握,还有利于以后更好的进步,提高了对课外知识的了解,虽然花费了不少时间,但只要学到有价值的东西,我认为都是值得的。
在完成该试验的过程中,我问了同学和老师,还查阅了很多和链表有关系的书籍,通过学习,翻看以前学过的知识,使我明白了我在学习知识上的很多不足。
不过在此同时又重新复习了课本,从中学到了许多以前未学到的知识,感觉非常有成就感,让我对自己更加有信心,让我对数据结构这门课程也更感兴趣了,以前我一直感觉枯燥难学的数据结构,现在我也愿意去认真研究学习了。
这次数据结构课程设计中,多亏了我的指导老师黄磊老师的悉心教导。
在以后的学习过程中,我要认真负责地对待课本中的每一个知识点,进一步充实自己,提高自己。
参考文献[1] 黄同成,黄俊民,董建寅.数据结构[M].北京:中国电力出版社,2008[2] 董建寅,黄俊民,黄同成.数据结构实验指导与题解[M].北京:中国电力出版社,2008[3] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,2002[4] 刘振鹏,张晓莉,郝杰.数据结构[M].北京:中国铁道出版社,2003附录:源代码如下1 用数组数据结构编写#include<stdio.h>void taozi(int n,int m){int day[10];int i;day[0]=n;for(i=0;i<10-m;i++)day[i+1]=2*(day[i]+1);printf("第%d天的桃子为:%d\n",m,day[10-m]);}void main(){int m;printf("请输入要求第几天剩下的桃子:\n");scanf("%d",&m);taozi(1,m);while(1){int j;printf("请输入j的值 0:退出 1:继续:\n");scanf("%d",&j);switch(j){case 1:printf("请输入要求第几天剩下的桃子:\n"); scanf("%d",&m);taozi(1,m);break;case 0:return;break;default:printf("输入有误请重新输入!");}}}2 用链数据结构编写#include<stdio.h>#include<stdlib.h>#define NULL 0typedef struct LNode{int data;struct LNode *next;}LNode;LNode *L;LNode *p,*s;int CreateList_L(int e,int m){int i;L=(LNode *) malloc(sizeof(LNode));p=(LNode *) malloc(sizeof(LNode));L->next=NULL;//创建头结点L->next=p;L->next->data=e;for(i=m-1;i>0;i--){s=(LNode *) malloc(sizeof(LNode));p->next=s;s->data=2*(p->data+1);p=s;//指针P总是指向最后一个结点s->next=NULL;}printf("第%d天的桃子为:%d\n",11-m,p->data); }void main(){int n;int k;printf("请输入要求第几天剩下的桃子:\n");scanf("%d",&n);k=11-n;CreateList_L(1,k);while(1){int j;printf("请输入j的值 0:退出 1:继续:\n"); scanf("%d",&j);switch(j){case 1:printf("请输入要求第几天剩下的桃子:\n"); scanf("%d",&n);k=11-n;CreateList_L(1,k);break;case 0:return;break;default:printf("输入有误请重新输入!");}}}3 用栈数据结构编写#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 100#define OK 1#define OVERFLOW -2typedef struct{int *base;int *top;int stacksize;}SqStack;SqStack s;int InitStack(){s.base=(int *) malloc(STACK_INIT_SIZE * sizeof(int)); if(!s.base)exit (OVERFLOW);s.top=s.base;s.stacksize=20;return OK;}void Push(int e,int m){int i;InitStack();*s.top++=e;for(i=0;i<10-m;i++){*s.top=2*(*(s.top-1)+1);s.top++;}printf("第%d天的桃子为:%d\n",m,*(s.top-1));}void main(){int m;printf("请输入要求第几天剩下的桃子:\n");scanf("%d",&m);Push(1,m);while(1){int j;printf("请输入j的值 0:退出 1:继续:\n");scanf("%d",&j);switch(j){case 1:printf("请输入要求第几天剩下的桃子:\n"); scanf("%d",&m);Push(1,m);break;case 0:return;break;default:printf("输入有误请重新输入!");}}}4 用递归编写#include<stdio.h>int i=9;int taozi(int x){int y;while(i>0){y=2*(x+1);i--;taozi(y);printf("%d\n",y);}}void main() {int a=1;taozi(a); printf("1\n"); }。