趋势科技的一道面试题,自己做了一下,就当练练手

本文介绍了一个名为Club的函数,用于模拟俱乐部顾客进出的情况。该函数通过调整顾客数量来反映俱乐部内部及外部等待区的状态,并通过一系列测试用例验证其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     club函数用来模拟一个俱乐部的顾客。

     初始化情况下是0个顾客,俱乐部最大规模只能有50个顾客,当用户超过了最大规模,他们必须等在外面。当一些顾客离开了等待队列将减少。这个club函数将打印在俱乐部里面的顾客人数,和外面的等待人数。函数声明如下:void club(int x);正数x代表客人来了,负数x代表客人离开了俱乐部举例而言,club (40)打印40,0;接着club (20)打印50,10;接着club (-5)打印50,5;接着club (-30)打印25,0;接着club (-30)打印N/A;因为这是不可能实现的。请用c++编程实现club函数。为了确保函数工作正常,我们使用下列数据来测试函数是否正常,你认为该选哪个选项:

a 60

b 20 50 -10

c 40 -30

d 60 -5 -10 -10 10

e 10 -20

f 30 10 10 10 -60

g 10 10 10

h 10 -10 10


A a d e g

B c d f g

C a c d h

D b d g h

E c d e f


 选E,代码如下:

#include <iostream>

const int capacity = 40;

void club( int x )
{
    static int in = 0;
    static int out = 0;


    if( x >= 0 )
    {
        if( x >= ( capacity - in ) )
        {
            out = out +( x -  ( capacity - in ) ) ;
            in = capacity;
            
        }
        else
        {
            in = in + x;
        }
    }
    else 
    {
        if( in + x >= 0)
        {
            in = in + x;//in - ( -x )
        }
        else
        {
            cout << "N/A"<< endl;
            return;
        }


        if( out <= ( capacity - in ) )
        {
            in = in + out;
            out = 0;
        }
        else
        {
            in = capacity;
            out = out - ( -x );
        }
    }


    cout << in << " , "<< out << ";" << endl;
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值