面试宝典问题:
使用club函数模拟一个俱乐部内的顾客,初始化时人数为0,俱乐部最多承载50人,当新用户超过这个规模时需要在外面等待,如果顾客离开人数减少。
使用void club(int x)为函数声明,打印出俱乐部内外的人数。
#include <iostream>
#include <string>
using namespace std;
#define MAX_IN_CUSTOM (50)
void club(int x)
{
//初始情况下内部客人为0个,使用static保证程序内两个值的连续性
static int in_custom = 0;
static int out_custom = 0;
//判断来人情况
if (x>0)
{
if(x+in_custom>=MAX_IN_CUSTOM)
{
out_custom = x+in_custom+out_custom-MAX_IN_CUSTOM;
in_custom = MAX_IN_CUSTOM;
}
else
{
in_custom = x+in_custom;
out_custom = 0;
}
}
else if (x<0)
{
x = -x;
if (out_custom>=x)
{
out_custom = out_custom-x;
}
else
{
in_custom = in_custom+out_custom-x;
out_custom = 0;
}
}
if (in_custom<0)
{
cout<<"Error: N/A"<<endl;
}
else
{
cout<<in_custom<<" in the room,"<<out_custom<<" out of the room."<<endl;
}
}
int main(int argc, char* argv[])
{
club(40);
club(30);
club(-10);
club(-40);
club(-40);
return 0;
}
进而选择一些数值对改程序进行测试。
设计测试用例,并说明为什么选择这些数字。