题目描述:
某实验室的管理员管理着一跟长为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
正文
第34次编程比赛题目(第1题)2006-07-09 10:16:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/elva6401/16486.html
阅读(3011) | 评论(1)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论