网友的相关建议:
#include "stdio.h"typedef struct tong{ int val; int maxval;}TONG;//倒空水#define EMPTY(A) (A).val = 0//装满#define FULL(A) (A).val = (A).maxval//获取桶中水int getTongVal(TONG* a){ return a->val;}//用A桶的水灌满B桶void pollAtoB(TONG* a, TONG* b){ //a 中的水与b中的水可以装满b桶 if(a->val + b->val > b->maxval){ //a中剩余 a->val = a->val + b->val - b->maxval; //b装满 FULL(*b); }else{ //不能将b装满 b->val += a->val; EMPTY(*a); }}int main(){ //初始化两个桶 TONG a5,b4; a5.val = 0; a5.maxval = 5; b4.val = 0; b4.maxval = 4; //结果 int result = 0; //向a5中装水 FULL(a5); //用a5中的水灌满b4桶 pollAtoB(&a5, &b4); //取a5中剩余的水,看是否达到目的 result = getTongVal(&a5); printf("当前桶中水:%d
",result); //循环 while(result != 3){ //清空b4 EMPTY(b4); //将a中剩余的水倒入b pollAtoB(&a5,&b4); //装满a FULL(a5); //用a装满b pollAtoB(&a5,&b4); //取a中剩余的水 result = getTongVal(&a5); printf("当前桶中水:%d
",result); } printf("完成取水!
"); return 0;}