猴子吃桃子2
猴子吃桃子语言C用解决语语
语言 语言语藏CC<
用 语言解决猴子吃桃子语语摘 要 本语程语语主要解决猴子吃桃子的语语。一群子摘了一堆桃猴C
子~他语 每天都吃前桃子的一半且再多吃一~到了第 当个天就只余下一桃子。用多 语个10
方法语语求出原语群子共摘了多少桃子。在语程语语中~系语语语平台 语 来猴个~ 程Windows 2000序语语语语语言采用 ~ 据语采用 数~ 程序行平台语 运Visual C++MS SQL 2000Windows
。在整程序中分语采用语据语、 语据语、语语等语语形式语语此语语的求解。程序个数数构数构构98/2000/XP
通语语语行~初步语语 了语语目语。 语语语 程序语语~运~语~语~语语~子吃桃 数猴引 言 在日常C++1 生活中语常遇到一些据语算有语的语语~ 语多子吃桃语语语 似的语语要求用语算机程序语言与数与猴来
解~用语程序算法可以解一些语似语 语~以便利于生活语语。 决个决语程语语背景 子吃桃语语猴1.1
涉及一比语有趣的语~把子吃桃的天倒语看的语~ 以天作语语的下语 个数猴数来数数~剩下桃i子的 个数的语推公式语 。 语语代
了倒第 数天剩下的桃子。所以可数a[i] a[i]=(a[i-1]+1)*2a[i]i
以求得此语的通语公式语 数;~,语程语语目的 在语程序中我语主个a[i]=3*pow2(i-1)-2 (i>=2) 1.2 要是用 语言解子吃桃语语~一群子摘了一堆 桃子~他语每天都吃前桃子的一半且决猴猴当C
再多吃一~到了第 个天就只余下一 桃子。用多语方法语语求出原语群子共摘了多少个来猴10
个学很个很桃子。 生活中或语上有多语似的语语~语语语看似语语~却可能使多重大 语语的重要语成部分或者是核心。 解此语语的目的是以便在生活中解根本性 语语~是生活语得更加便利。 决决1.3 语程语语容 语程序的容是以 内个内语言语程序语言语分语用语据语、语据 语、语语等语语形体数数构数构构C
式语语此语语的求解。 需求分析 语 语程语语 分语三 部分~ 分语用 三语不同 的方法解 个个即决2
猴个数构构子 吃桃 子语语。每部分 都有不同的算法思想。 用 语语语 语的算法 ~通语 造求桃 子的 语~然后 语出要 求的 语语语。 用语 语语语 的算法~ 语是建 立数数来构语表~ 每天的 桃将子目 存入语 表~ 然后语出第一天的 桃子。 用语 语语语 语的算法 ~是通 语函本 身的数数构数
特点 ~反语语 用自身 ~最 后到语语的出口 ~求得算法的解。 找概要语语 语语思路 是语3 2.1 C 构构数即个式语言。语式语言的语著 特点是代语及据的分隔化 ~程 序的 各部分 除了必要 的信息 交流外彼 此立。 语语语 化方式 可使程序 语次~便于使用、语语以及语语。独构清晰语言是C 以函形式 提供语用语的~ 语些 函可方 便的语用 ~具 有多语循 语、件 语句控制 程序数数并条
流 向~而 使程序完全语化 。 从构语语
如果 用语语 解语 语语 ~把子 吃桃数构决个猴2.2
的天 倒语 看的语 ~以 天作语语的 下语 数来数数~ 剩下桃子的 个数的语推公式语 i a[i]
。 语语代 表了倒第 数天剩下 的桃子。 所以可以求 得此语的 通语数数a[i]=(a[i- 1]+1)*2 a[i] i
公式 语 。 如果 用语语 解语 语语~ 建立一语 构决个个语表~根 据每天桃 a[i]=3*2e(i- 1)-2 (i>=2)
子 后一 天桃子 的语系 数与数依次 每天的桃子 存语将数语表 中~最后语 出第一 n=2*n+2,
天的桃子。 如果 用语语语 解语 语语 ~要求利 用他语每 天都吃 前桃子 的一 半且数构决个当
再多吃一语 一特点~语语一语语算法。 个个语语语语 数构猴数来语语 把子吃桃的天 倒语语看的语~4 3.1
以天作语语的 下语 数数~剩下桃子 的 个数的语 推公式语 。语语 代i a[i] a[i]=(a[i- 1]+1)*2 a[i] 表了倒 第 数天剩 下 的 桃 子 。 所 以 可以 求 得 此 语 的 通 语 公 式 语数数 i
;~ , 。语语语算法的
语如语 数构,语 始 建立一以天语个数a[i]=3*pow 2 (i- 1) -2 (i>=2)3-1
下语以 剩下桃子语元素的语 语定此语的通向公式 求第一天的桃子 语 束 语 数数数数3-1 int
定语语和下语 数语语语 倒第一天的桃子语 数数day,tao[11]; tao[0]=0; tao[1]=1; ////tao[0]0 // 1
语语的语语 数最初的桃子数for(day=2;day<=10;day++) tao[day]=3*pow(2,day-1)-2; //printf("语语出最初的桃子 数语语 用语语语语语语算法~其核心是利用构构个语表语语存语语构~%d\n",tao[10]);//3.2
将数每天的桃子存语 在语表中~在语表中语语的语推。 首先是建立一空数个语表~语生一语语点~个
且语语点的地址语语 将。 然后把每天的桃子数从语表的第一语点入个插语表。 最后第一天的桃L
子被最后一入数个插语表~成语语表中第一语~其语语 个将~ 最后只要语出 即得到第一天的ee
桃子。 建立语数语表的程序代语如下, 构个造一空语语表 void InitList(LinkList &L)//
语生语语点并使 指向此语语点 { L=(LinkList)malloc(sizeof(LNode));//,L if(!L) exit(OVERFLOW);
语算法中~我用了语个运语表~语语表每语点由据和指向后语语点指语部个数两 L->next=NULL; }
分成。在入据语~入的位置的前一语的原有后去指语语语此语点的后 去指语~然后把构插数将插插
入语点的 地址语语前一语点的后语指语~入就完成了。 入语点的程序代语如下, 插插data Status
在第 个插位置之前入元素 语器初语语 数ListInsert(LinkList L,int i,ElemType e)//i e { int j=0;//0
指向语语点 语第 找个语点 语语 语语语语算法~利用 LinkList s,p=L;//p while(p&&j
0 Y --i N sum
子函 数~ 参数和 int sum_fan(int n,int i) { if (i>0) { n = sum_fan((n+1)*2,--i); } // sum_fun n 接受主函的 数参数和 每一次都用的语去语用子函本身 数运行语境 语语i x day //((n+1)*2)5 4.1 分析 在本语程语语中~系语语语平台语 程序语语语言语 ~程序的行语境运Windows2000,Visual C++6.0语 。一般分语三版本个学语 版、语语版和企语版~不同的版本适合于不Visual C++ 6.0Visual C++:
同语型的语用语语。语语中可以使用 语三版本的任意一语~在本语程语语中~以 个语语程Visual C++ 6.0 语境。 是 公司的 语语 工具箱中Microsoft Visual C++ 6.0 Microsoft Microsoft Visual Studio 6.0 的一 个程序语语包。包中除包括 语语器外~语包括 所有的语、例子和语语建 C++Visual C++C++
语用程序所需要的文。自 档年 公司推出 后~着其随Windows 1993 Microsof Visual C++1.0 新版本的不语世~断已成语语语程 序语语行语件语语的首语工具。 从最早期的 Visual C++Visual C++
版本~语展到最新的 版本~已语有了大的语化~在界面、功能、语支持方面很1.0 7.0 Visual C++
都有语 多的增强。最新的 版本在语语器、语语、语语器以及语机助系语等 方面都比以前的帮7.0 MFC
版本做了语大改语。 语然微语公司推出了 ~但的语用的大的它很 Visual C++.NET(Visual C++7.0)局限性~只适用于 和 。所以语语中~ 更多的是以 Windows 2000,Windows XP Windows NT4.0
语平台。 是 公司推出的目前使用最泛的基于广 Visual C++6.0 Visual C++ 6.0 Microsoft
平台 的可语化语程语境。是在以往版本不更新的基语上形成的~由断 Windows Visual C++ 6.0
于其功能强大~活性好~完全语语展以及具有强大的 灵支持~因而在各 语 语言语语Internet C++工具中语而出~成语目前最语流行的 脱语言集成语语语境。 秉承 以C++Visual C++ 6.0 Visual C++前版本的语特性~语用语提供了一套良 好的可语化语语语境,主要包括文本语语器、语源语语器、工程异
语建工具、 运数构运行语果语语的语行语 果如语 语 数构构运语语语果 语语的语行语果 如语 语 4.2 4-1 4-1 4-2
语语语果 语语语的行语 果如语 构构运语 语语语语果 构语语 语次的语程语语的容是用 内语言语语4-2 4-3 4-3 6 C 猴子吃桃子语语~语语我语是 具有挑语性的任语~语然只做了一语语的生籍管理模语来个很个很学学~但通语 星期的语语也中到了不少语西~更深刻的理解了语本中的容。 《据语》 是两个从学内数构
一语语性语强的语程~语了好语语语程~必语在掌践学践握理语知语的同语~ 加 强上机语。 同语再次深刻理解了 中语的思想和语语~文件的概数构很念和相语操 作~以及有语据语的多知语。根据语C++
语语语的需要~语方面的语个从缺点加 以语合平衡~中语语比语适宜的语语方法。在本次语程语语中~我明白了理语 语语与并数写相语合的重要性~提高了自己语语据及语程序的能力~培语了基本 的~良好的程序语语技能。提高语合用所运学凭知语的能力。 在语次语程语语中曾遇到了不少语语~ 就语我一个很——人的能力语准语有效 的完成语次的语程语语~在此~我忠心感语我的指语老语湛新霞。湛老语语 工作语语语~真丰当很帮耐心语语~知语富而且相和语。在语次语程语语中语了我 大的助。他语语的治学浅学很精神和深厚的理语水平都使我语益非。同语语要感语 我的同~他语语我提出了多有用的建语~助我完成了语次的语程语语。 最 后也要帮学感语我语校语我语提供良好的语程语境~使我语能语按语完成任语。 参献考文 王语梅~胡明~王涛数构据语版北京,语大出版清学社~[1] . (C++) . 2007
王语梅~胡明~王涛数构据语版学与语语语语语语指语北京,语 大出版清学语浩[2] . (C++) . , 2007 [3]
强 程序语语北京,语大出版清学社语阿奇~丁有和教程北京,机. C++. , 2004 . [4] . Visual C++.
械工语出版社~李文语~李语语~ 周语语作语语算机语语程序语语入语语言的语践与探 语2006 . [5] . C++. .
语算机科学~~;, ,,附语,源程序代语 语语语代语 数构19992648083
# include
# include
void main()
{
定语语和下语数int day,tao[11]; //
语语语 tao[0]=0; //tao[0] 0
倒第一天的桃子语 数数tao[1]=1; //1
for(day=2;day<=10;day++)
语语的语语数tao[day]=3*pow(2,day-1)-2; //
最初的桃子语数语出最初的桃子 数printf("%d\n",tao[10]);//}
语语代语 构#include"iostream"
#include"stdlib.h"
#include"stdio.h" #define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW 0
#define OK 1
#define NULL 0
typedef int Status;
typedef int ElemType;
struct LNode
{
ElemType data;
LNode *next;
};
typedef LNode *LinkList;
构个造一空语语表void InitList(LinkList &L)//
{
L=(LinkList)malloc(sizeof(LNode)
语生语语点并使 指向此语语点);//,L
if(!L)
exit(OVERFLOW);
L->next=NULL;
}
当第 个将元素存在的语~其语语 语tatus GetElem(LinkList L,int i,ElemType &e)//i e
语指语向后语~找找直到到 指向第 个语点 while(p&&jnext;
} if(!p||j>i)
return ERROR;
e=p->data; return OK; }
在第 个插位置之前入元素 Status ListInsert(LinkList L,int i,ElemType e)//i
语器初语语 数指向语语点 e { int j=0;//0 LinkList s,p=L;//p
语第 找个语点while(p&&jnext;
}
if(!p||j>i-1)
return 0;
生成新的语点s=(LinkList)malloc(sizeof(LNode));//
s->data=e;
新语点指向原第 个语点 s->next=p->next;//i
原第 个语点指向新语点p->next=s;//i-1
return 1;
}
void main()
初始化语表InitList(L);//
for(i=1,n=1;i<=10;i++)
{
将数每一天的桃子语语语n=2*n+2;//
将 的语语入语表 n ListInsert(L,1,n);//n
}
Status GetElem(L,1,e);
语出桃子的目数printf("%d",e);//
}
语语语代语 构
include
子函 数~ 参数和 接受主函的数参数int sum_fan(int n,int i) // sum_fun n i
day { if (i>0)
{
每一次都用的语去语用子函数n = sum_fan((n+1)*2,--i); // ((n+1)*2) }
返回语果return n; //
}
void main()
语语函语用的次 数数{ int sum; int day = 9;//
最后一天语剩得一桃子个int x = 1; //
语用子函 数并把返回得语果语语 sum = sum_fan(x,day); // sum_fan, sum
printf("%d",sum);
}