正文

第34次编程比赛题目(第1题)2006-07-09 10:16:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/16486.html

分享到:

题目描述:
某实验室的管理员管理着一跟长为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

阅读(2913) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册