《数据结构》
课程设计报告。
猴子吃桃子问题》
学院。班级。
学号。姓名。
指导教师。完成日期。
目录。需求分析。
概要设计。详细设计。
调试分析。用户使用说明。
测试结果。附录。
一。 需求分析。
本课程设计要求采用三种方法计,即数组数据结构,链数据结构,递归方法计算出猴子摘的桃子数,设计如下:
1) 输入:输入的形式为整型,输入值的范围是1-10。
2) 输出:显示数据为猴子一共摘的桃子数,输出的形式为整型。
3) 程序以用户和电脑的对话方式执行,由用户在键盘上输入演示程序中规定的运算命令,即在电脑上显示“猴子共摘的桃子数为”,运算结果在后显示“1534”。
4) 程序执行的命令包括:数组数据结构,定义一维数组,构造数组公式,求结果,结束。链数据结构,结点存储字符,指针链表。递归,构造if语句,返回值输出结果。
5) 测试数据
a[1] ,eat(1)
a[2] ,eat(2)
a[3] ,eat(3)
a[4] ,eat(4)
a[5] ,eat(5)
a[6] ,eat(6)
a[7] ,eat(7)
a[8] ,eat(8)
a[9] ,eat(9)
a[10] ,eat(10)
二.概要设计。
猴子分n天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,..因此,有:
a1=(a2+1)*2;
a2=(a3+1)*2;
a3=(a4+1)*2;
a9=(a10+1)*2;
a10=1;
现在就知道了算法,我们可以用递归来求解:
初始条件:int sum=1;
定义函数。int eat(int day)
算法(if条件语句)
if(day==10如果是第10天。
return sum; /则只有1个。
elsesum=(sum+1)*2; /前一天的桃子比后一天的桃子多一半加一个。
return eat(day+1);
数组法:初始化。
int a[10];
void main()
int i;
初始条件:i为整型。
初始条件:a[10]=1
for (i=10; i>0; i--)给i赋初值10;判断i是否大于0,若是则执行语句,执行后自减;若不是则结束循环*/
printf("第一天的桃子数:%d",a[1]);输入第一天的值*/
链数据函数的设计:
struct link
int data;
struct link *next;
主函数:int main()
link *p,*q;
int i;
为p开辟内存空间。
p = struct link*)malloc(sizeof(struct link));
为q开辟内存空间。
q = struct link*)malloc(sizeof(struct link));
p->data = 1;
链表指针:
for(条件语句)
三.详细设计。
1.数组数据结构。
#include <>
int a[10]; 定义一个一维数组*/
void main()
int i; /定义天数为i*/
a[10]=1; /给数组a[1]赋值为1*/
for (i=10; i>0; i--)给i赋初值10;判断i是否大于0,若是则执行语句,执行后自减;若不是则结束循环*/
printf("第一天的桃子数:%d",a[1]);输入第一天的值*/
2.链数据结构。
#include <>
#include <>
struct link
int data;
struct link *next;
int main()
link *p,*q;
int i;
p = struct link*)malloc(sizeof(struct link));为p开辟内存空间。
q = struct link*)malloc(sizeof(struct link));为q开辟内存空间。
p->data = 1; /p的值为1
for(i=0;i<9;i++)条件语句。
printf("%d",q->data);
return 0;
3.递归。#include<>
/递归函数的定义。
int sum=1; /定义sum的值为1
int eat(int day) /eat函数调用day的类型。
if(day==10如果是第10天。
return sum; /则只有1个。
elsesum=(sum+1)*2; /前一天的桃子比后一天的桃子多一半加一个。
return eat(day+1);
int main()
printf("第一天的桃子数:%d",eat(1));最后输出第一天的值。
return 0;
流程图:四.调试分析。
主函数的设计较为简单,主要功能包含在函数里。
核心算法为数学计算公式sum=(sum+1)*2
当天的桃子数等于后一天的桃子数加1再乘以2
三种设计方法均使用了核心算法,依题目要求最后输出第一天的桃子数,通过算法其实稍加改进可显示任一天的桃子数。
五.用户使用说明。
本程序的运行环境为windows 7系统,执行文件。
编译运行随即输出各天的桃子数。
六.测试结果。
三种方法输出结果均如下:
七。附录。递归**:
#include<>
int sum=1;
int eat(int day)
if(day==10)
return sum;
elsesum=(sum+1)*2;
return eat(day+1);
int main()
printf("第一天的桃子数:%d",eat(1));
return 0;
链数据。#include <>
#include <>
struct link
int data;
struct link *next;
int main()
link *p,*q;
int i;
p = struct link*)malloc(sizeof(struct link));
q = struct link*)malloc(sizeof(struct link));
p->data = 1;
for(i=0;i<9;i++)
printf("%d",q->data);
return 0;
数组结构。#include <>
int a[10];
void main()
int i;
a[10]=1;
for (i=10; i>0; i--)给i赋初值10;判断i是否大于0,若是则执行语句,执行后自减;若不是则结束循环*/
printf("第一天的桃子数:%d",a[1]);输入第一天的值*/
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...