[PTA]7-22 龟兔赛跑(20分)

[PTA]7-22 龟兔赛跑(20分)

C语言的龟兔赛跑问题,用的办法比较笨,逻辑应该还算清晰。

#include 

int main()
{
	int RabbitDistance,T,time=0;//time在这里计数,以10位单位,每10分钟检查一次龟兔的距离。
	scanf("%d",&T);
	if(T <= 10){
		printf("^_^ %d",9*T);//输入T小于10的情况,兔子直接赢,跑过距离T*9
	}else{
		RabbitDistance=90,time=10;
		while(time <= T-30){
			if(RabbitDistance > 3*time){
				time+=30;
			}else{
				RabbitDistance+=90;
				time+=10;
			}
		}//t从0开始,每过10分钟判定一次距离长短,兔子大于乌龟,则t+30(休息三十分钟),否则t+10,兔子在10分钟内跑90,循环在t<=T-30内进行。
		if((T-time)>=0 && (T-time)<10){
			if(RabbitDistance<=3*time){
				RabbitDistance+=(T-time)*9;
			}
		}else if((T-time)>=10 && (T-time)<20){
			if(RabbitDistance <= 3*time){
				RabbitDistance += 90;
				time += 10;
				if(RabbitDistance <= 3*time){
					RabbitDistance += (T-time)*9;
				}
			}
		}else if((T-time)>=20 && (T-time)<30){
			if(RabbitDistance <= 3*time){
				RabbitDistance+=90;
				time+=10;
				if(RabbitDistance <= 3*time){
					RabbitDistance+=90;
					time+=10;
				}
			}//这里三个if主要是判别T-t<30的三种情况,最终计算出兔子跑的距离。
		}
		if(RabbitDistance > 3*T){
			printf("^_^ %d",RabbitDistance);
		}else if(RabbitDistance == 3*T){
			printf("-_- %d",3*T);
		}else{
			printf("@_@ %d",3*T);
		}//无论兔子跑的距离是哪种情况,乌龟的距离始终是T*3。
	}
	return 0;
}

后续会改进。

你可能感兴趣的:(练习题)