#include
#include
#define TYPE_NUM 7
int Moneyvalue [TYPE_NUM]={100,50,20,10,5,2,1}; //取款面值
int Moneydata [TYPE_NUM]={0,0,0,0,0,0,0}; //各种面值币种数量
int Moneybox [TYPE_NUM]={10,10,10,10,10,10,10}; //取款机所剩各种币种的数量(真正钱箱)
int Moneyboxtmp[TYPE_NUM]; //模拟钱箱
void Display();
void OutMoney() //取款操作
{
int i,tmp;
int money;
printf("请输入所取金额:");
scanf("%d",&money);
for (i=0;i
{
Moneyboxtmp[i]=Moneybox[i]; //模拟钱箱装值,避免取款失败后真正钱箱数值发生改变
}
for (i=0;i
{
tmp=money/Moneyvalue[i];
if (tmp>Moneyboxtmp[i]) //例如:当所取100元的数量大于模拟钱箱数量
Moneydata[i]=Moneybox[i]; //把真正钱箱所有100元的数量全取出
else
Moneydata[i]=tmp; //所取数量等于计算数量
money=money-Moneydata[i]*Moneyvalue[i];
Moneyboxtmp[i]-=Moneydata[i];
}
if (money==0)
{
printf("交易成功!\n");
Display();
for (i=0;i
{
Moneybox[i]=Moneyboxtmp[i];
}
}
else
{
printf("交易失败!\n");
}
}
void InputMoney() //存款操作
{
int i;
int money;
for (i=0;i
{
printf("请输入%3d元的数量:",Moneyvalue[i]);
scanf("%d",&money);
Moneybox[i]+=money;
}
}
void Display() //显示各币种的数量
{
int i;
for (i=0;i<7;i++)
{
if (Moneydata[i])
{
printf("%3d 元数量: %d张\n",Moneyvalue[i],Moneydata[i]);
}
}
}
void main(void)
{
char keynum;
while (1)
{
printf(" 请选择您所需的操作:\n");
printf("取款<1> 存款<2>\n");
keynum=getche();
printf("\n");
switch(keynum)
{
case '1':OutMoney(); //取款
break;
case '2':InputMoney(); //存款
break;
default:
break;
}
}
}