小提示:部分题目的图形有偏移现象;解决办法为,将题目拷贝到记事本,字体设置为‘Fixedsys’。
(编译环境:windowsXP_sp3 + Visual_C++_2008,保证编译成功,正常运行。)
9. 四人玩火柴棍游戏,每一次都是三个人赢,一个人输。输的人要按赢者手中的火柴
数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,
每人恰好输过一次, 而且每人手中都正好有16根火柴。问此四人做游戏前手中各有
多少根火柴? 编程解决此问题。
代码如下:
#include<iostream>
using namespace::std;
void GetChangeback(int &x1, int &x2, int &x3, int &x4);
void ReportNumber(int x1, int x2, int x3, int x4);
void main()
{
int a =16;
int b =16;
int c =16;
int d =16;
cout<<"假设四个人在四轮中输的次序为:d,c,b,a"<<endl;
GetChangeback(a, b, c, d);
cout<<"在第四次之前:"<<endl;
ReportNumber(a, b, c, d);
GetChangeback(b, c, d, a);
cout<<"在第三次之前:"<<endl;
ReportNumber(a, b, c, d);
GetChangeback(c, d, a, b );
cout<<"在第二次之前:"<<endl;
ReportNumber(a, b, c, d);
GetChangeback(d, a, b, c);
cout<<"那么做游戏之前:"<<endl;
ReportNumber(a, b, c, d);
system("pause");
}
void GetChangeback(int &x1, int &x2, int &x3, int &x4)
{
x1 = x1 + x2/2 + x3/2 + x4/2;
x2 = x2/2;
x3 = x3/2;
x4 = x4/2;
}
void ReportNumber(int x1, int x2, int x3, int x4)
{
cout<<"a ="<<x1<<endl;
cout<<"b ="<<x2<<endl;
cout<<"c ="<<x3<<endl;
cout<<"d ="<<x4<<endl;
}