[C How To Program] 习题7.17 龟兔赛跑问题

为了观察比赛过程, 每次移动中间,sleep了1s。好像挺带劲的。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int rabbitRun(int type);

int turtleRun(int type);

int main(){
	int rabbitX = 1, turtleX = 1, win = 0, s, i ,randWin;
	srand(time(NULL));

	while( !win ){
		s = (rand() % 10) + 1;
		
		rabbitX += rabbitRun(s);
		turtleX += turtleRun(s);

		if(rabbitX < 1){
			rabbitX = 1;
		}

		if(turtleX < 1){
			turtleX = 1;
		}
		
		for(i = 1 ; i <= 70; i++){
			if(turtleX == i && rabbitX == i){
				printf("OUCH!!!");
			}
			else if( turtleX == i){
				printf("T");
			}
			else if(rabbitX == i){
				printf("H");
			}
			else{
				printf("_");
			}
		}
		printf("\n");
		
		if( rabbitX >= 70 || turtleX >= 70){
			win = 1;
			if( rabbitX >= 70 && turtleX >=70){
				randWin = rand() % 2;
				
				/* turtle win */
				if( randWin == 0 ){
					printf("TORTOISE WINS!!! YAY!!!\n");
					return 0;
				}
				printf("it's a tie.\n");
			}
			else if( rabbitX >= 70){
				printf("Hare Wins. Yuch.\n");
			}else{
				printf("TORTOISE WINS!!! YAY!!!\n");
			}
		}
		if( !win ){
		    sleep(1);
		}
	}

}

int rabbitRun(int t){
	int moveSteps[] = {0, 0, 0, 9, 9, -12, 1, 1, 1, -2, -2};
	if(t >= 1 && t <= 10){
		return moveSteps[ t ];
	}
	return 0;
}

int turtleRun(int t){
	int moveSteps[] = {0, 3, 3, 3, 3, 3, -6, -6, 1, 1, 1};
	if(t >= 1 && t <= 10){
		return moveSteps[ t ];
	}
	return 0;
}

比赛过程还挺劲爆的:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值