ITAT教育工程就业技能大赛复赛试题A卷第一题

1、  编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤。(20分)

#include "stdio.h"
#include "conio.h"

int a,b,c;
//把x里的水移动到y中,y最多可以装ymax的水
void move(int *x,int *y,int ymax)
{
	if(*x+*y >ymax)
	{
		*x=*x+*y-ymax;
		*y=ymax;		
	}
	else
	{
		*y=*x+*y;
		*x=0;
	}
	printf("%d\t%d\t%d\n",a,b,c);
}
void main()
{	
	a=12;
	b=c=0;
	//先向B中注水
	printf("a12\tb8\tc5\n");
    while(a!=6&&b!=6)
	{
        if(c<5)
			move(&a,&b,8);
        else
			move(&c,&a,12);
		if(b!=6&&a!=6)
			move(&b,&c,5);
	}
	if(b==6)
		move(&c,&a,12);
	else
		move(&c,&b,8);
	getch();
	//先向c中注水
	/*
	while(a!=6&&b!=6)
	{
	if(b<8)
	move(&a,&c,5);
	else
	move(&b,&a,12);
	if(b!=6&&a!=6)
	move(&c,&b,8);
	}
	if(b==6)
	move(&c,&a,12);
	else
	move(&c,&b,8);	
	  getch();
	 }
	*/
}

你可能感兴趣的:(ITAT教育工程就业技能大赛复赛试题A卷第一题)