- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[C程序指针实践演练
指针作业3 :实践演练
实验(一)龟兔赛跑
1.实验目标
传址调用,子函数能直接修改主调函数中的数据
2.实验描述
本程序模拟龟兔赛跑问题。程序将采用生成随机数的方法开发这一问题的仿真程序。
在此比赛中共设了70个点,每个点代表比赛跑道中可能的一个位置。乌龟和兔子从第1个点出发,终点是在第70个点上。
时钟按秒来计算。随着时钟的移动,程序能够根据下述规则来调节乌龟和兔子的位置。
动物 跑动类型 占用时间 跑动量 乌龟 快走
后滑
慢走 50%
20%
30% 向右3个点
向左6个点
向右1个点 兔子 睡觉
大后滑
快走
小步跳
慢后滑 20%
20%
10%
30%
20% 不动
向左9个点
向右12个点
向右1个点
向左2个点 动物从位置1(起跑线)开始比赛。如果动物从点1处向左移动,那么就将此动物重新放回点1的位置。
随着时钟的转动(每次重复循环),打印出乌龟所在的位置和兔子所在的位置,分别以T和H表示。在某些偶然的情况下,参赛者会位于同一点上,在这种情况下,是乌龟赢了兔子。程序应在这一位置上打印“=”。除了“T”“H”“=”外的所有的打印位置都是空白的。
打印完每一行后,测试一下两个动物是否己经达到或超过点70位置。如果超过,就将获胜者的名字打印出来,并终止程序的模拟过程。如果乌龟赢了,那么打印“TORTOISE WINS!!! YAY!!!”,如果兔子赢了,打印“Hare wins. Yuch.”。如果两个动物都没有赢,那么重新执行循环,模拟下一轮的情况。
3.输出结果
。。。
4.问题解决技巧
变量tortoise和变量hare分别存储了乌龟和兔子的当前位置(声明为1~70的整型数)。这两个变量都为main所有,但程序希望在函数调用(如moveT和moveH)过程中时对其进行修改,因此它们必须采用传址方式。
对指针所访问的数据引用应用形式“*指针名”。
程序中要生成一个随机整数i来表示描述占用时间中的百分比,i的范围为1=i=10。对于乌龟而言,当1=i=5时为快走,当6=i=7时为后滑,当8=i=10时为慢走。兔子的跑动方式与其类似。
因程序运行结果较长,TC2.0受结果窗口的限制只能看到最后面的部分结果,若在c-free下运行可看到完整的运行结果。
5. 程序模板
/*race.c*/
#include stdio.h
#include stdlib.h
#include time.h
#define RACE_END 70
/*函数moveT的声明*/
/*函数moveH的声明*/
/*函数printCP的声明*/
int main()
{ int tortoise =1 , hare =1 , timer = 0;
srand(time(0));
printf(ON your mask, Get set\nBang!\nAND theyre off !!!\n);
while(tortoise!= RACE_END hare != RACE_END)
{ /*调用函数moveT*/
/*调用函数moveH*/
/*调用函数printCP*/
++timer;
}
if(tortoise = hare)
printf(\nTortoise wins!!! YAY!!!\n );
else
printf(Hare wins . Yuch.\n);
printf(Total %d seconds.\n ,timer);
}
/*编写函数moveT的定义头部*/
{
int x=1+rand()%10;
if(x=1 x=5) //快走
*pT += 3;
else if (x=6 x=7) //后滑
*pT -= 6;
else (*pT)++; //慢走
if( *pT 1 )
*pT = 1;
else if(*pT RACE_END)
*pT = RACE_END;
}
/*编写函数moveH定义头部*/
{
int x = 1 +rand() % 10;
/*编写语句移动兔子*/
/*编写语句测试兔子是否还没开始起跑或者超出终点,处理这种情况*/
}
/*编写函数printCurrentPosition定义*/
{ int i;
if(*pT == *pH)
/*编写语句,打印兔子和乌龟的位
文档评论(0)