编译器里输出正常,但网页提交平台就是乱码
而且本应调用拷贝构造函数输出的copyconstructor run也没有输出
不知道哪里出了毛病 不会改了
这是样例
#include <iostream>
using namespace std;
#define N 100
#include <cstring>
int index(char c[])
{
int i;
for (i = 0; c[i] != '\0'; i++)
{
}
return i;
}
class BigNum
{
private:
char num[N];
public:
BigNum(char c[] = {"+0"});
BigNum(const BigNum &);
~BigNum();
void setNum(char c[]);
char const *getNum(void) const;
void show() const;
BigNum operator+(BigNum &);
BigNum operator-(BigNum &);
};
BigNum::BigNum(char c[])
{
int length = index(c);
char str[length + 1];
if (c[0] != 45)
{
str[0] = 43;
}
strcpy(num, strcat(str, c));
cout << "BigNum Constructor run" << endl;
}
BigNum::BigNum(const BigNum &b)
{
strcpy(num, b.num);
cout << "BigNum CopyConstructor run" << endl;
}
BigNum::~BigNum()
{
cout << "BigNum Destructor run" << endl;
}
void BigNum::setNum(char c[])
{
int length = index(c);
char str[length + 1];
if (c[0] != 45)
{
str[0] = 43;
}
strcpy(num, strcat(str, c));
}
char const *BigNum::getNum(void) const
{
return num;
}
void BigNum::show() const
{
cout << "BigNum(" << num << ")" << endl;
}
BigNum BigNum::operator-(BigNum &b)
{
int i;
BigNum tmp;
if ((num[1] - b.num[1]) > 0)
{
tmp.num[0] = 43;
for (i = 1; num[i] != '\0'; i++)
{
tmp.num[i] = -num[i] + b.num[i] + '0';
}
}
else
{
tmp.num[0] = 45;
for (i = 1; num[i] != '\0'; i++)
{
tmp.num[i] = -num[i] + b.num[i] + '0';
}
}
tmp.num[i] = '\0';
return tmp;
}
BigNum BigNum::operator+(BigNum &b)
{
int i;
BigNum tmp;
tmp.num[0] = 43;
for (i = 1; num[i] != '\0'; i++)
{
tmp.num[i] = num[i] + b.num[i] - '0';
}
tmp.num[i] = '\0';
return tmp;
}
int main(void)
{
char c[100], op;
cin >> c;
BigNum b1(c), b2(b1);
b1.show();
cin >> c;
b2.setNum(c);
b2.show();
cin >> op;
if (op == '+')
(b1 + b2).show();
if (op == '-')
(b1 - b2).show();
return 0;
}