考试模拟题
请写程序,使得主程序能得到正确的输出
EXAMPLE INPUT
1000 2000
EXAMPLE OUTPUT
1000 2000
900 1900
1800 2800
主程序 (不能修改)
#include "source.cpp"
int main() {
Integer a, b;
cin >> a >> b;
cout << a << " " << b << endl;
link(a, b);
a -= 100;
cout << a << " " << b << endl;
b += a;
cout << a << " " << b << endl;
}
参考答案
正常答案by yizuodi
#include <iostream>
using namespace std;
class Integer{
public:
int data;
Integer * link;
int havelink;
Integer(){data=0;havelink=0;}
Integer & operator -=(int a){
this->data=this->data-a;
if(this->havelink==1){link->data=link->data-a;}
}
Integer & operator +=(Integer tmp){
this->data=this->data+tmp.data;
if(this->havelink==1){link->data=link->data+tmp.data;}
}
};
istream & operator >>(istream & i,Integer & tmp){
i >> tmp.data;
return i;
}
ostream & operator <<(ostream & o,const Integer & tmp){
o<<tmp.data;
return o;
}
void link(Integer & a,Integer & b){
a.havelink=1;
b.havelink=1;
b.link=&a;
a.link=&b;
}
离谱答案by yizuodi
#include <iostream>
using namespace std;
class Integer{
public:
int data;
static int add_number;
static int add_number2;
Integer * link;
Integer(){data=0;}
Integer & operator -=(int a){
add_number=a;
}
Integer & operator +=(Integer tmp){
add_number2=tmp.data-add_number;
}
};
int Integer::add_number=0;
int Integer::add_number2=0;
istream & operator >>(istream & i,Integer & tmp){
i >> tmp.data;
return i;
}
ostream & operator <<(ostream & o,const Integer & tmp){
o<<tmp.data-tmp.add_number+tmp.add_number2;
return o;
}
void link(Integer a,Integer b){
b.link=&a;
a.link=&b;
}
ZHC的答案
//升级后的
#include <iostream>
using namespace std;
class Integer{
public:
int data;
int * link;
Integer(){
data=0;
link = NULL;
}
Integer( int t ){
data = t;
}
Integer & operator -=(int t){
this->data -= t;
if( link != NULL) *link -= t ;
return *this ;
}
Integer & operator +=(int t){
this->data += t ;
if( link != NULL){ *link += t ; }
return *this ;
}
Integer & operator +=(Integer tmp){
this->data += tmp.data;
if( link != NULL) *link += tmp.data;
return *this ;
}
Integer & operator -=(Integer tmp){
this->data -= tmp.data;
if( link != NULL) *link -= tmp.data;
return *this ;
}
Integer & operator = (int tmp) {
this->data = tmp ;
return *this ;
}
Integer & operator =(Integer tmp){
this->data = tmp.data ;
return *this ;
}
};
istream & operator >>(istream & i,Integer & tmp){
i >> tmp.data;
return i;
}
ostream & operator <<(ostream & o,const Integer & tmp){
o<<tmp.data;
return o;
}
void link(Integer & a,Integer & b){
b.link=&a.data;
a.link=&b.data;
}
答案
#include <iostream>
#include <vector>
using namespace std;
class Integer
{
public:
int value;
vector<Integer *> linked;
Integer() {
value = 0;
}
Integer(int value_) {
value = value_;
}
Integer & operator += (int value_) {
value += value_;
for (int i = 0; i < linked.size(); ++ i) {
linked[i]->value += value_;
}
return *this;
}
Integer & operator += (const Integer & other) {
return (*this) += (other.value);
}
Integer & operator -= (const Integer & other) {
return (*this) += (-other.value);
}
};
void link(Integer & int1, Integer & int2) {
int1.linked.push_back(&int2);
int2.linked.push_back(&int1);
}
ostream & operator << (ostream & out, const Integer & int1) {
out << int1.value;
return out;
}
istream & operator >> (istream & in, Integer & int1) {
in >> int1.value;
return in;
}
//升级后的
#include
using namespace std;
class Integer{
public:
int data;
int * link;
Integer(){
data=0;
link = NULL;
}
Integer( int t ){
data = t;
}
Integer & operator -=(int t){
this->data -= t;
if( link != NULL) *link -= t ;
return *this ;
}
Integer & operator +=(int t){
this->data += t ;
if( link != NULL){ *link += t ; }
return *this ;
}
Integer & operator +=(Integer tmp){
this->data += tmp.data;
if( link != NULL) *link += tmp.data;
return *this ;
}
Integer & operator -=(Integer tmp){
this->data -= tmp.data;
if( link != NULL) *link -= tmp.data;
return *this ;
}
Integer & operator = (int tmp) {
this->data = tmp ;
return *this ;
}
Integer & operator =(Integer tmp){
this->data = tmp.data ;
return *this ;
}
};
istream & operator >>(istream & i,Integer & tmp){
i >> tmp.data;
return i;
}
ostream & operator
#“查看评论区”的功能有点小问题 bit-comments点过就不会变成中文了
感谢反馈 已修复~