精选问答
Itat 第四届复赛A卷第一题,1、\x05编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤.a12 b8 c512 0 0* * * ( “*”表示当前状态下每个容器的盛水量)......0 6 6因为“*”表示当前状态下每个容器的盛水量,所以共有三个容器吧,要求只要水分为两个6升,那直接把a给c5升,c给b五升,a给b一升就好啦,貌似就这样啊,讲解下,顺便带个答案哈,

2019-04-13

Itat 第四届复赛A卷第一题,
1、\x05编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤.
a12 b8 c5
12 0 0
* * * ( “*”表示当前状态下每个容器的盛水量)
......
0 6 6
因为“*”表示当前状态下每个容器的盛水量,所以共有三个容器吧,要求只要水分为两个6升,那直接把a给c5升,c给b五升,a给b一升就好啦,貌似就这样啊,讲解下,顺便带个答案哈,
优质解答
#include "stdio.h"
int max[3]={12,8,5}; //定义三个杯子,容量为12升,8升,5升.
int a=12,b=0,c=0;
void f1() /*12->8*/
{
a=a-(max[1]-b);
b=8;
}
void f2() /*8->5*/
{
if(b>=5)
{
b=b-(max[2]-c);
c=5;
}
else
{
c=b;
b=0;
}
}
void f3() /*5->12*/
{
a=a+c;
c=0;
}
void main()
{
\x05printf("a12 b8 c512 0 0");
int i=1;
for(;;i++)
{
if(c==5)
f3();
else if(b>c)
f2();
else f1();
printf("%d %d %d",a,b,c);
if(a==6&&b==6)
break;
}
printf("%d",i);
}
#include "stdio.h"
int max[3]={12,8,5}; //定义三个杯子,容量为12升,8升,5升.
int a=12,b=0,c=0;
void f1() /*12->8*/
{
a=a-(max[1]-b);
b=8;
}
void f2() /*8->5*/
{
if(b>=5)
{
b=b-(max[2]-c);
c=5;
}
else
{
c=b;
b=0;
}
}
void f3() /*5->12*/
{
a=a+c;
c=0;
}
void main()
{
\x05printf("a12 b8 c512 0 0");
int i=1;
for(;;i++)
{
if(c==5)
f3();
else if(b>c)
f2();
else f1();
printf("%d %d %d",a,b,c);
if(a==6&&b==6)
break;
}
printf("%d",i);
}
相关问答