龟兔赛跑.c

来自「一个解决龟兔赛跑爬山问题的算法」· C语言 代码 · 共 98 行

C
98
字号
/*下面这段代码模拟了龟兔赛跑爬山的情况,其中有个时钟触发设置每秒执行一次循环,乌龟的规则是:50% 的机会快走(右移三格);20% 的机会下滑(左移六格);30% 的机会慢走(右移一格). 

兔子的规则是:20% 的机会睡觉(不移动);20% 的机会大跳(右移九格);10% 的机会大滑(左移十二格);30% 的机会小跳(右移一格);20% 的机会小滑(左移两格). 

其中最先走到整 70 格的胜利,超过 70 格的从头开始;程序在一条线上打印了龟兔移动的轨迹,当两者重合时打印 P;乌龟用 G 表示,兔子用 T 表示. 

***************************************/
#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 

void guitu(void); 

main() 
{ 
srand(time(NULL)); 
guitu(); 
return 0; 
} 

void guitu() 
{ 
int i,j,count=0,cou=0,number; 
char printfun[71]; 

while(1) { 
for(j=0;j<70;j++) 
printfun[j]=' '; 
printfun[71]=''; 

number=rand()%10+1; 
printf("n"); 

if(1<=number && number<=5) { 
count=count+3; 
if(count>70) count=0; 
printfun[count]='G'; 
} 

if(6<=number && number<=7) { 
count=count-6; 
if(count<0) count=0; 
printfun[count]='G'; 
} 

if(8<=number && number<=10) { 
count=count+1; 
if(count>70) count=0; 
printfun[count]='G'; 
} 

if(1<=number && number<=2) { 
cou=cou+0; 
printfun[cou]='T'; 
} 

if(3<=number && number<=4) { 
cou=cou+9; 
if(cou>70) cou=0; 
printfun[cou]='T'; 
} 

if(number==5) { 
cou=cou-12; 
if(cou<0) cou=0; 
printfun[cou]='T'; 
} 

if(6<=number && number<=8) { 
cou=cou+1; 
if(cou>70) cou=0; 
printfun[cou]='T'; 
} 

if(9<=number && number<=10) { 
cou=cou-2; 
if(cou<0) cou=0; 
printfun[cou]='T'; 
} 

if(count==cou) 
printfun[count]='P'; 

printf("%s",printfun); 
printf("nn"); 

if(count==70) { 
printf("gui win!!!nn"); 
break; 
} 
if(cou==70) { 
printf("tu win!!!nn"); 
break; 
} 
sleep(1); 
} 
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?