版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1姓名学号实验成绩华中师范大学计算机科学系实验报告书实验题目:实验八课程名称:高级程序语言设计主讲教师:王敬华辅导教师:王敬华课程编号:88710103班级:计算机学院2012级2班实验时间:2013.5.21实验目的:实验目的:1.熟悉函数的递归应用2.掌握二维数组的定义方法及使用3.掌握一位数组的定义及应用条件4.提高分析和解决实际问题的能力实验内容:分书问题:有编号分别为0,1,2,3,4的5本书,准备分给5个人A,B,C,D,E,每个人阅读兴趣用一个二维数组加以描述,公式如下:写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下图所示。书人01234A00110B11001C01101D00010E01001实验环境:九号楼1122软工实验室,VisualC++6.0软件实验设计原理:(1)定义一个整型的二维数组,将表中的阅读喜好用初始化方法赋给这个二维数组。可定义:intlike[5][5]={{0,0,1,1,0},{1,1,0,0,1},{0,1,1,0,1},{0,0,0,1,0},{0,1,0,0,1}};(2)定义一个整型一维数组book[5],用来记录书是否已被选用。用下标作为5本书的编号,被选过元素值为1,未被选过元素值为0,初始化皆为0。intbook[5]={0,0,0,0,0};(3)画出思路图。①定义试着给第i人分书的函数Try(i),i=0,1,2,3,4。②试着给第i个人分书,先试分0号书,再分1号书,分2号书,……,因此有一个与结点,让j表示书,j=0,1,2,3,4。③LP为循环结构的循环体,如下图所示。五、实验详细实现过程与算法流程五、实验详细实现过程与算法流程#include<stdio.h>
#define
BOOL
int
#define
TRUE
1
#define
FALSE
0
#define
MAX_MANS
5
#define
MAX_BOOKS
5
int
nCorMans;
/*记录当前借书情况
bHas[i][j]表示第i个人已经把第j个书借走*/
BOOL
bHas[MAX_MANS][MAX_BOOKS];
BOOL
bLike[MAX_MANS][MAX_BOOKS]
=
{{0,0,1,1,0},{1,1,0,0,1},{0,1,1,0,1},{0,0,0,1,0},
{0,1,0,0,1}};
void
printRes()
{
int
i,j;
for(i=0
;i<MAX_MANS
;i++)
{
for(j=0;
j<MAX_BOOKS
;j++)
{
if(bHas[i][j]
==
TRUE)
{
printf("the
%dth
stu
has
the
%dth
book\n"
,i+1
,j+1);
}
}
}
printf("\n\n\n");
}
BOOL
book_search()
{
int
i,j;
BOOL
bRes
=
FALSE;
BOOL
bBorrow
=
FALSE;
for
(i=0
;
i<MAX_BOOKS
;
i++)
{
bBorrow=FALSE;
/*第nCorMans个人喜欢第i本书*/if(bLike[nCorMans][i]
==
TRUE)
{
/*是否已经有人拥有这本书*/
for
(j=0
;j<nCorMans
;j++)
{
if(bHas[j][i]
==
TRUE)
{
bBorrow
=
TRUE;
break;
}
}
/*这本书还能借给第nCorMans个人*/
if(bBorrow
==
FALSE)
{
/*到最后一个人了,可以确定一种分书方案*/
if(nCorMans
==
MAX_MANS-1)
{
bHas[nCorMans][i]
=
TRUE;
/*打印出该方案*/
printRes();
/*复位,将书放回*/
bHas[nCorMans][i]
=
FALSE;
bRes
=
TRUE;
}
else
{
/*将书借走*/
bHas[nCorMans][i]
=
TRUE;
nCorMans++;
/*以这种方案可以产生一种借书方案*/
if(book_search())
{
bRes
=
TRUE;
nCorMans--;
bHas[nCorMans][i]
=
FALSE;
}
else
{
nCorMans--;
bHas[nCorMans][i]
=
FALSE;
}if(bLike[nCorMans][i]
==
TRUE)
{
/*是否已经有人拥有这本书*/
for
(j=0
;j<nCorMans
;j++)
{
if(bHas[j][i]
==
TRUE)
{
bBorrow
=
TRUE;
break;
}
}
/*这本书还能借给第nCorMans个人*/
if(bBorrow
==
FALSE)
{
/*到最后一个人了,可以确定一种分书方案*/
if(nCorMans
==
MAX_MANS-1)
{
bHas[nCorMans][i]
=
TRUE;
/*打印出该方案*/
printRes();
/*复位,将书放回*/
bHas[nCorMans][i]
=
FALSE;
bRes
=
TRUE;
}
else
{
/*将书借走*/
bHas[nCorMans][i]
=
TRUE;
nCorMans++;
/*以这种方案可以产生一种借书方案*/
if(book_search())
{
bRes
=
TRUE;
nCorMans--;
bHas[nCorMans][i]
=
FALSE;
}
else
{
nCorMans--;
bHas[nCorMans][i]
=
FALSE;
}}
}
}
}
return
bRes;
}
void
main()
{
int
i,j;
nCorMans=0;
for
(i=0
;i<MAX_MANS;
i++)
{
for
(j=0
;j<MAX_BOOKS;
j++)
{
bHas[i][j]
=
FALSE;
}
}
book_search();}
}
}
}
return
bRes;
}
void
main()
{
int
i,j;
nCorMans=0;
for
(i=0
;i<MAX_MANS;
i++)
{
for
(j=0
;j<MAX_BOOKS;
j++)
{
bHas[i][j]
=
FALSE;
}
}
book_search();六、实验调试与结果分析(问题的发现、分析、解决方案与创新)实验调试成功。注意:1.深刻领会编程思想,掌握正确的编程格式2.理解递归的函数思想,并多练习加以提高3.增加对数组、循环语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论