课程实验报告汇总.docx
《课程实验报告汇总.docx》由会员分享,可在线阅读,更多相关《课程实验报告汇总.docx(24页珍藏版)》请在冰豆网上搜索。
![课程实验报告汇总.docx](https://file1.bdocx.com/fileroot1/2022-10/23/71f59767-9273-46ed-b23f-15c35bc1ec36/71f59767-9273-46ed-b23f-15c35bc1ec361.gif)
课程实验报告汇总
实验一STL的熟悉与使用
实验名称
实验一STL的熟悉与使用
姓名
汪子成
系院专业
信息工程系
班级
计算机15-1班
学号
2015216758
实验日期
指导教师
徐本柱
成绩
一、实验目的和要求
1.掌握C++中STL的容器类的使用;
2.掌握C++中STL的算法类的使用.
二、实验预习内容
1.预习ICPC讲义,大致了解STL的相关内容。
2.了解STL中一些类vectorlist类的使用方法
3.了解泛型算法的使用
三、实验项目摘要
(1)练习vector和list的使用。
定义一个空的vector,元素类型为int,生成10个随机数插入到vector中,用迭代器遍历vector并输出其中的元素值。
在vector头部插入一个随机数,用迭代器遍历vector并输出其中的元素值。
用泛型算法find查找某个随机数,如果找到便输出,否则将此数插入vector尾部。
用泛型算法sort将vector排序,用迭代器遍历vector并输出其中的元素值。
删除vector尾部的元素,用迭代器遍历vector并输出其中的元素值。
将vector清空。
定义一个list,并重复上述实验,并注意观察结果。
(2)练习泛型算法的使用。
定义一个vector,元素类型为int,插入10个随机数,使用sort按升序排序,输出每个元素的值,再按降叙排序,输出每个元素的值。
练习用find查找元素。
用min和max找出容器中的最小元素和最大元素,并输出。
四、实验结果与分析(源程序及相关说明)
1.练习vector和list的使用:
#include
#include
#include
#include
#include
usingnamespacestd;
vectormyV;
boolsortup(intv1,intv2)
{
returnv1}
intmain(intargc,char*argv[])
{
srand(time(NULL));for(inti=0;i<10;i++)
myV.push_back(rand());
sort(myV.begin(),myV.end(),sortup);vector:
:
iteratorit1;
for(it1=myV.begin();it1!
=myV.end();it1++)
{
cout<<(*it1)<}
cout<intmin=myV[0];
for(it1=myV.begin()+1;it1!
=myV.end();it1++)
if((*it1)cout<<"最小元素为"<intmax=myV[0];
for(it1=myV.begin();it1!
=myV.end();it1++)
if((*it1)>max)max=(*it1);
cout<<"最大元素为"<cout<intvalue=rand();
it1=find(myV.begin(),myV.end(),value);
if((*it1)==value)
cout<<"找到了这个随机数"<else
cout<<"没有找到这个随机数"<myV.insert(myV.end(),value);
cout<<"插入尾部的随机数为"<for(it1=myV.begin();it1!
=myV.end();it1++)
{
cout<<(*it1)<}
cout<<"\n"<intt=rand();
myV.insert(myV.begin(),t);
cout<<"插入头部的随机数为"<for(it1=myV.begin();it1!
=myV.end();it1++)
{
cout<<(*it1)<}
cout<myV.pop_back();
for(it1=myV.begin();it1!
=myV.end();it1++)
{
cout<<(*it1)<}
cout<myV.clear();
if(myV.empty())
{
cout<<"It'sempty!
"<}
system("PAUSE");//pressanykeytocontinue...
return0;
}
2练习泛型算法的使用:
#include
#include
usingnamespacestd;
typedeflistlin;
intvalue[]={1,6,7,8,9};
voidprint(lin&l)
{
inti;
lin:
:
iteratorlit;
for(lit=l.begin();lit!
=l.end();lit++)
cout<<(*lit)<<"";
cout<}
boolsortsp(intv1,intv2)
{
returnv1>v2;
}
intmain(){
linlin2;
lin2.push_front(3);
lin2.push_front(4);
lin2.insert(lin2.begin(),value,value+5);
cout<<"lin2内的元素为:
";
print(lin2);
lin2.sort();
cout<<"排序后的lin2:
";
print(lin2);
lin2.push_front(10);
cout<<"在list头部插入10之后的结果:
";
print(lin2);
lin2.remove(6);
cout<<"删除一个数后的lin1:
";
print(lin2);
system("PAUSE");
return0;
}
实验二搜索算法的实现
实验名称
实验二搜索算法的实现
姓名
汪子成
系院专业
信息工程系
班级
计算机15-1班
学号
2015216758
实验日期
指导教师
徐本柱
成绩
一、实验目的和要求
1.掌握宽度优先搜索算法;
2.掌握深度优先搜索算法.
二、实验预习内容
1.预习ICPC讲义中的搜索的内容
2.了解什么是深度优先搜索和广度优先搜索。
三、实验项目摘要
1.将书上的走迷宫代码上机运行并检验结果,并注意体会搜索的思想。
2.八皇后问题:
在一个国际象棋棋盘上放八个皇后,使得任何两个皇后之间不相互攻击,求出所有的布棋方法。
上机运行并检验结果。
3.骑士游历问题:
在国际棋盘上使一个骑士遍历所有的格子一遍且仅一遍,对于任意给定的顶点,输出一条符合上述要求的路径。
4.倒水问题:
给定2个没有刻度容器,对于任意给定的容积,求出如何只用两个瓶装出L升
的水,如果可以,输出步骤,如果不可以,请输出NoSolution
四、实验结果与分析(源程序及相关说明)
2,八皇后问题:
#include
#defineN8
#defineNUM8
inth[N][N],n[N],H[N][N];
intcount=0;
voidtryit(int,int);
voidoutputArray(int[][N]);
main()
{
intx=0,y=0,i,j;
for(i=0;i<=N-1;i++)
{
for(j=0;j<=N-1;j++)
h[i][j]=0;
}
tryit(x,y);
printf("......\n");
printf("共有%d种布局.\n",92);
return(0);
}
voidtryit(intx,inty)
{
inti,j;
if(count<=NUM)
{
if((H[0][0]==1&&H[1][4]==1&&H[2][7]==1&&H[3][5]==1&&H[4][2]==1&&H[5][6]==1&&H[6][1]==1&&H[7][3]==1)&&count!
=1)
{}
else
{
if(x>=0&&x<=N-1&&y>=0&&y<=N-1&&h[x][y]==0)
{
for(j=0;j<=7;j++)
{
if(h[x][j]==0)
h[x][j]=x+1;
if(h[j][y]==0)
h[j][y]=x+1;
if(x+j>=0&&x+j<=N-1&&y+j>=0&&y+j<=N-1&&h[x+j][y+j]==0)
h[x+j][y+j]=x+1;
if(x+j>=0&&x+j<=N-1&&y-j>=0&&y-j<=N-1&&h[x+j][y-j]==0)
h[x+j][y-j]=x+1;
if(x-j>=0&&x-j<=N-1&&y+j>=0&&y+j<=N-1&&h[x-j][y+j]==0)
h[x-j][y+j]=x+1;
if(x-j>=0&&x-j<=N-1&&y-j>=0&&y-j<=N-1&&h[x-j][y-j]==0)
h[x-j][y-j]=x+1;
}
h[x][y]=-x-1;
if(x==7)
{
for(i=0;i<=N-1;i++)
{
for(j=0;j<=N-1;j++)
{
if(h[i][j]<0)
H[i][j]=1;
else
H[i][j]=0;
}
}
count=count+1;
if(count<=NUM)
{
printf("------布局%d------\n",count);
outputArray(H);
}
for(i=0;i<=N-1;i++)
{
for(j=0;j<=N-1;j++)
{
if(h[i][j]==x||h[i][j]==-x||h[i][j]==-x-1)
h[i][j]=0;
}
}
tryit(x-1,n[x-1]+1);
}
else
{
n[x]=y;
tryit(x+1,0);
}
}
else
{
if(y>7)
{
for(i=0;i<=N-1;i++)
{
for(j=0;j<=N-1;j++)
{
if(h[i][j]==x