资源描述
《用户猜测藏物位置》
程序设计基础课程设计报告
专 业: 电子信息工程
班 级: 电信2班
姓 名:
指导教师:
二O 一 二 年 二 月 二十 日
目 录
1 课程设计目的………………………………………………………2
2 课程设计题目描述和要求…………………………………………2-3
3 功能模块说明………………………………………………………3-4
4 源文件………………………………………………………………4-5
5 课程设计总结………………………………………………………5
6 参考书目……………………………………………………………6
1.课程设计目的:
通过课程设计了解自己通过一学年的学习C++这门课到底学的怎么样,并将书本上的知识用于实践中,验证自己的学习成果,并进一步发现自己的不足并且改正.
2.课程设计题目描述和要求:
用户猜测藏物位置:计算机在n行n列(行号为0到n-1,列号为0到n-1)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。
思考:若没猜对时也可增加告诉用户藏物的方向信息;另外在猜对结束时,还可告诉用户共猜了几次。
大致的思路为:
1、 为获得藏放某一物件的棋盘,可动态地创建一个二维数组;
2、 对创建的二位数组赋初值(所赋的值为1~m*n的连续整数);
3、 通过随机函数rand()来获取1~m*n之间的任一整数,并将值赋给N,N对应棋盘上的一个位置,即储物藏放的位置;
4、 通过循环,先找到储物藏放的位置,在提示用户输入猜测的位置,通过比较这两组坐标是否相等,判断用户猜测是否正确;
5、 还可以设计一个循环,嵌套在上面的循环里,4中的循环每执行一次,该循环可以提供帮助,告诉用户储物藏放的位置和用户猜测位置之间的距离。
6、 在4中,同时还应设计一个循环变量,用以计算用户猜测的次数。
3.功能模块说明:
1程序运行时,首先提示设置棋盘的行、列;
2接下来,用户需输入猜测的位置的行、列,若正确,程序提示一共猜测了几次,若错误,程序告知猜测位置与储物位置之间的距离是多少,帮助用户找到储物……
3、反复执行2,直到找到储物的位置为止。
运行实例:
进一步改进:
能够添加更多的用于帮助用户的部分:
比如, 为了游戏的趣味性,还可以限制猜测的次数。设计一个结构,在猜测的次数到达一定值之后,跳出循环,终止程序。
4.源程序:
#include<iostream.h>
#include<stdlib.h> //用到了随机函数
#include<math.h>
#include<time.h>
int main()
{
int i,j,m,n;
cout<<"请设置行、列:";
cin>>m>>n;
//动态的创建一个二维数组(通过指针数组)
int **guess;
guess=new int*[m];
for(j=0;j<m;j++)
{guess[j]=new int[n];
}
//初始化二维数组
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{guess[i][j]=i*n+j+1;
}
//通过随机函数,设置箱子的位置 //表示a~b的话,a+rand()%(b-a+1)
int N;
srand((unsigned) time(NULL)); /*播种子*/
N = rand() % (m*n);
//设置一个循环,进行猜词游戏
int x,y,z; //z是两坐标之间的距离
int t=1; //t是一个统计变量
int a,b; //N的位置
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(guess[i][j]==N){a=i+1;b=j+1;i=m;break;}
while(1){
cout<<"请输入你猜的坐标:";
cin>>x>>y;
if(x==a&&y==b) break;
//距离判断
z=(a-x)*(a-x)+(b-y)*(b-y);
cout<<"与该物体的距离是:"<<int(sqrt(z))<<endl; //强制数据类型转换
if(x>a) cout<<"可能是向左移且";else cout<<"可能是向右移且";
if(y>b) cout<<"向下移!";else cout<<"向上移!";
cout<<endl;
t=t+1;
}
cout<<"恭喜你,你猜对了!一共猜了"<<t<<"次!"<<endl;
//撤销二维数组
for(i=0;i<m;i++)
{delete [] guess[i]; //一下子撤销一行
}
delete [] guess;
return 0;
}
5.课程设计总结:
在这个课程设计中,我明白了自己在学习中的许多漏洞,在课程设计中许多概念型问题还需要看书解决,说明学习还不够扎实,这门课不是老师教完就完了的,还需要自己经常的上机实验,来步步完善自己的思维,以更熟练的掌握C++的应用。
在整个设计中深刻体会到编程者的辛苦,一点点差错将导致严重后果,在整个程序设计过程中,能锻炼自己的思维使其更敏锐,发现自己的错误本是件不容易的事,但编程过程中,必须要找到自己所疏忽或考虑不周等而引起的错误。
6.参考书目:
谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
展开阅读全文