题目如图片,程序实现如下:
分两种情况,可以借酒瓶与不借酒瓶,通过宏定义来区分。
代码如下:
/ 这是一个简单的C++程序:simple.cpp
#include <iostream> //包含标准库中的输入输出流头文件
#include <stdlib.h>
using namespace std;
#define KJ 1 //可以借瓶子或瓶盖
void main(void)
{
int Money, PG, KP;
int PG_J = 0;
int KP_J = 0;
int KP_LAST = 0;
int PG_LAST = 0;
int Money_remain;
cout << "请输入购入钱数:";
cin >> Money;
int N = Money / 2;
PG = N;
KP = N;
if (N >= 1)
{
for (int i = 0; i < 100; i++)
{
if (PG >= 4)
{
N = N + PG / 4; //喝过的总数加上 瓶盖兑换的
KP = KP + PG / 4; //目前的酒瓶个数
PG = PG / 4 + PG % 4; //目前的瓶盖个数
}
if (KP >= 2)
{
N = N + KP / 2; //瓶盖兑换后的总数加上酒瓶兑换的个数
PG = PG + KP / 2; //目前的瓶盖个数
KP = KP / 2 + KP % 2;
}
if (PG >= 4 || KP >= 2)
continue;
else
break;
}
//任何情况下,借别人一个酒瓶都可以换一瓶酒,再把换得的酒瓶还回去
if (KJ)
{
KP_J = 2 - KP;
if (KP_J == 1)
{
N++;
PG = PG + 1;
KP_LAST = 1;
KP = 0;
}
//瓶盖比较特殊,只有三个的情况或2个的情况下可以换
if (PG == 4)
{
N++;
KP_LAST = KP_LAST + 1;
PG = 1;
if (KP_LAST == 2)
{
N++;
KP = 0;
PG++;
}
}
else if (PG == 3)
{
N++;
PG_J = 1;
PG = 0;
KP = 0;
}
}
cout << "总共可以买" << N << "瓶啤酒" << endl;
cout << "剩余空瓶个数为: " << KP << endl;
cout << "剩余瓶盖个数为: " << PG << endl;
if (KJ)
{
cout << "借空瓶个数为: " << KP_J << endl;
cout << "借瓶盖个数为: " << PG_J << endl;
}
}
else
{
cout << "钱不够买一瓶酒!!!" << endl;
}
system("pause");
}
可借酒瓶的结果如下:
不可以借酒瓶的结果如下: