第五届itat C语言复赛A卷第一题,原理似乎明白,代码看不懂,求解释

题目是这样的:有三个桶,一个12L的,一个8L的,一个5L的,现第一个桶里有12L水,怎么样分成两个6L的。输出形式如下:a12b8c51200***``660答案如下,... 题目是这样的:有三个桶,一个12L的,一个8L的,一个5L的,现第一个桶里有12L水,怎么样分成两个6L的。
输出形式如下:
a12 b8 c5
12 0 0
* * *
`
`
6 6 0
答案如下,不过有点看不懂,只求解释
如果哪位高手还有易于理解的答案,可以给答案
#include "stdio.h"
#include "conio.h"
move(int *ai,int *aj,int aicontainer,int ajcontainer)
{
if(aicontainer>ajcontainer)
{
if(*ai+*aj>ajcontainer)
{
*ai=*ai-(ajcontainer-*aj);
*aj=*aj+ajcontainer-*aj;
}
else
{
*aj=*ai+*aj;
*ai=*ai-*aj;
}

}
else
{
*aj=*ai+*aj;
*ai=0;
}
}

main()
{
int a[3]={12,0,0},i,m=0;
int container[3]={12,8,5};
printf("%-8s%-8s%-8s\n","a12","b8","c5");
while(a[0]!=6)
{
for(i=0;i<3;i++)
{
move(&a[i],&a[(i+1)%3],container[i],container[(i+1)%3]);
m++;
printf("%-8d%-8d%-8d\n",a[0],a[1],a[2]);
if(a[0]==6&&a[1]==6)
{
printf("The total number is %d to reach success!",m);
getch();
exit();
}
}
move(&a[1],&a[2],container[1],container[2]);
printf("%-8d%-8d%-8d\n",a[0],a[1],a[2]);
m++;
if(a[0]==6&&a[1]==6)
{
printf("The total number is %d to reach success!",m);
break;
}
}
getch();
}
展开
 我来答
匿名用户
2011-11-06
展开全部
C++??????????
追问
C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式