第五届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();
} 展开
输出形式如下:
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();
} 展开
1个回答
2011-11-06
展开全部
C++??????????
追问
C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询