题目描述:某实验室的管理员管理着一跟长为1米的电线。做实验的人可以从他那里借走或是还回电线。该管理员采用了以下的管理办法:1、将开始时的电线放在柜子里。2、当有人要还回电线时,把还来的电线放到柜子里。3、当有人要借走电线时,在柜子里找到长度大于等于借者所要求长度的所有电线,从中选出长度最短的一根,然后剪下借者需要的长度,将剪下的部分借出。如果有剩下的部分,将它放到柜子里。如果借电线时柜子里没有可以满足要求的电线,则无法借出。请根据以上规则编写四个函数,对管理过程进行模拟:void Start(void); /* 保证只在实验开始时调用一次 */void In(int length); /* 实验开始后、实验结束前可能调用多次 */int Out(int length); /* 实验开始后、实验结束前可能调用多次 */void End(void); /* 保证只在实验结束时调用一次 */四个函数的功能介绍:Start函数:用于初始化。End函数: 用于处理释放内存等善后工作,如果不需要善后,此函数中可以没有任何代码。In函数: 用于处理还回电线,其中参数length表示了还回的长度,单位为厘米。Out函数: 用于处理借出电线,其中参数length表示了还回的长度,单位为厘米。如果成功借出,返回1,否则返回0。补充:因为有可能有人上一次实验时有剩余的电线,在这一次实验是还回。所以如果出现柜子中的电线总长度大于初始值,或者还回了一段“没被借出”的电线,也是合理的。测试时的程序可能像下面这样:(伪代码)int main(){ Start(); if( Out(24) != 参考答案 ) 报错; In(10); if( Out(128) != 参考答案 ) 报错; In(62); if( Out(34) != 参考答案 ) 报错; if( Out(10000) != 参考答案 ) 报错; End();}有任何意见或问题请到以下位置提出。http://www.programfan.com/club/showbbs.asp?id=179737

评论