1 / 13

主讲 范刚

主讲 范刚. 题目 及分析. 用随机数产生器建立模拟龟兔赛跑的程序。对手从 71 个方格的第 1 格开始起跑,每格表示跑道上的一个可能位置,终点线再第 71 格处。   有一个每秒钟滴答一次的中,程序应按下列规则调整动物的位置:   动物                       运动类型                         时间比                            移动距离

alicia
Download Presentation

主讲 范刚

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 主讲 范刚

  2. 题目 及分析 • 用随机数产生器建立模拟龟兔赛跑的程序。对手从71个方格的第1格开始起跑,每格表示跑道上的一个可能位置,终点线再第71格处。   有一个每秒钟滴答一次的中,程序应按下列规则调整动物的位置:   • 动物                       运动类型                         时间比                            移动距离 • 乌龟                       快速爬行                            50%                                 3m • 滑到                                    20%                                 -6m • 缓慢爬行                            30%                                 1m • 兔子                        睡觉                                      20%                                  0m • 大步跳                                  20%                                   9m • 大步滑到                              10%                                  -12m • 小步跳                                  30%                                 1m • 小步滑到                              20%                                  -2m

  3. 第一步 建立跑道 char gui[73]={“_______________________________________________________________________p”}; //71个_和* char tu[73]={"***********************************************************************P"};

  4. 第二步 随机数的产生 • 由于本题有概率问题 所以需要用的随机数 srand(time(0)); for(i=0;;++i) { a=(rand()%100);b=(rand()%100); } 注:为龟兔分别用两个随机数 ,是为了防止出现二者产生对应关系 如果用一个随机数 则 兔子睡觉的时候 乌龟一定的缓慢爬行的

  5. 第三步 确定乌龟的位置 • if(a<30) • { • printf(“缓慢爬行”); //乌龟有%20的概率缓慢爬行 • pgui+=1; • } • else if(a>=30&&a<50) • { • printf(“滑倒 ”); //有%20的概率滑倒 • pgui-=6; • } • else if(a>=50) • { • printf(“快速爬行”); //有%50的概率快速爬行 • pgui+=3; • } • if(pgui<0) //防止出界 • pgui=0; • if(pgui>71) //防止出界 • pgui=71; gui[pgui]=‘g’; //标注乌龟的位置 printf(“%s\n\n”,gui); //打印出跑道 及乌龟

  6. 第四步 确定兔子的位置 (同乌龟) • if(b<20) • { • printf("睡觉 "); • ptu+=0; • } • else if(b>=20&&b<40) • { • printf("大步跳 "); • ptu+=9; • } • else if(b>=40&&b<50) • { • printf("大滑倒 "); • ptu+=(-12); • } else if(b>=50&&b<80) { printf("小步跳 "); ptu+=1; } else if(b>=80) { printf("小步滑倒"); ptu+=(-2); } if(ptu<0) ptu=0; if(ptu>71) ptu=71; tu[ptu]='t'; printf("%s\n\n\n",tu);

  7. 第五步 判断是否胜利 • if(pgui>=71) • { • printf("\n------乌龟获胜!!"); break; • } if(ptu>=71) • { • printf("\n-------兔子获胜!!"); break; • }

  8. 第六步 完善并刷屏 • 1.要在下次输出之前 将这次打印的乌龟位置恢复到原来的样子。 • 2.清屏 要求每次执行下次打印前将上次的输出 清除 清屏函数 • 3.主动延时 • 延时 gui[pgui]='_'; tu[ptu]='*';

  9. 谢谢大家!

  10. 为什么跑道是71格 命令行界面 默认的是 80个字符宽度

  11. Visual c++中的清屏函数 • #include <stdlib.h> void main() { system("cls"); • }

  12. 延时的方法 • 1.多次循环 • for(j=0;j<5000000;++j){} • 2.读取时间 • #include<stdio.h> • #include<time.h> • int main() • { • int time1,time2; • time1=clock(); • while(1) • { time2=clock(); • if((time2-time1)>5000) //可以做到精确控制 • break ; • } • }

  13. 睡眠函数(推荐) • 函数名: sleep 功 能: 执行挂起一段时间 • #include <stdio.h> • #include<windows.h> //非 doc.c visual c++ 用 windows.h • int main(void) • { • int i; • for (i=1; i<5; i++) • { • printf("Sleeping for %d seconds\n", i); • Sleep(i*1000); //注意是大写 单位是毫秒 • } • return 0; • }

More Related