关于数据结构复数的四则运算的疑问 -求解决解决方法

关于数据结构复数的四则运算的疑问 --求解决
我们老师叫我做的复数四则运算 如若输出的时候是0+0i ,我不知道怎样做才能把输出的变成0。 
主函数:
#include <stdio.h>
#include "Complex.h"
#include "ComplexOperation.c"

void main()
{
struct Complex c1,c2,sum;
int real,imag;
//构造复数c1
printf("请输入第一个复数的实部:");
scanf("%d,",&real);
printf("请输入第一个复数的虚部:");
scanf("%d,",&imag);
c1=InitComplex(real,imag);

//构造复数c2
printf("请输入第二个复数的实部:");
scanf("%d,",&real);
printf("请输入第二个复数的虚部:");
scanf("%d,",&imag);
c2=InitComplex(real,imag);


//复数的加法

sum=AddComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的和是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);


  //复数的减法

sum=JianComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的差是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);


  //复数的乘法



sum=MultiplyComplex(c1,c2);
printf("复数%d+%di和复数%d+%di的积是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);





}
头文件:


struct Complex {
int real;
int imag;
}; 

操作:
struct Complex InitComplex(int real, int imag)
{
struct Complex t;
t.real=real;
t.imag=imag;
return t;
}

struct Complex AddComplex(struct Complex c1, struct Complex c2)
{
struct Complex t;
t.real=c1.real+c2.real;
t.imag=c1.imag+c2.imag;
return t;
}


struct Complex JianComplex(struct Complex c1, struct Complex c2)
{
struct Complex t;
t.real=c1.real-c2.real;
t.imag=c1.imag-c2.imag;
return t;
}
struct Complex MultiplyComplex(struct Complex c1, struct Complex c2)
{
struct Complex t;

t.real=c1.real*c2.real-c1.imag*c2.imag;
t.imag=c1.real*c2.imag+c2.real*c1.imag;
return t;
}



int GetReal(struct Complex c)
{/*取复数实部 */
return c.real;
}
int GetImag(struct Complex c)
{/*取复数虚部 */
return c.imag;
}
void Print_C(struct Complex c)
{/*复数输出*/
if(GetImag(c)==0.0) printf("%5.2f\n",GetReal(c));
else if(GetReal(c)==0.0) printf("%5.2fi\n",GetImag(c));
else printf("%5.2f+%5.2fi\n",GetReal(c),GetImag(c));
}






/*完成该函数输出复数
void PrintComplex(struct Complex c1, struct Complex c2)
{ struct Complex sum;
if(sum.real==0&&sum.imag==0)
printf("复数%d+%di和复数%d+%di的是:0\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
else 
if(sum.real==0)
printf("复数%d+%di和复数%d+%di的和是:%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
else 
if(sum.imag==0)
printf("复数%d+%di和复数%d+%di的和是:%d\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
else
printf("复数%d+%di和复数%d+%di的和是:%d+%di\n",c1.real,c1.imag,c2.real,c2.imag,sum.real,sum.imag);
}
*/
不知道怎么改 ,才能使输出的结果时若是特殊的虚数为0 时输出的只有实部a,而不是a+0i。

------解决方案--------------------
C/C++ code
#include<iostream>
using namespace std;
class ComplexNum
{
private:
    int real;
    int imaginary;
public:
    ComplexNum()
    {
        this->real=0;
        this->imaginary=0;
    }
    ComplexNum(int real,int imaginary)
    {
        this->real=real;
        this->imaginary=imaginary;
    }
    int getReal()
    {
        return this->real;
    }
    void setReal(int real)
    {
        this->real=real;
    }
    void setImaginary(int imaginary)
    {
        this->imaginary=imaginary;
    }
    int getImaginary()
    {
        return this->imaginary;
    }
    ComplexNum operator+(ComplexNum &x)
    {
        ComplexNum y;
        y.setReal(this->real+x.real);
        y.setImaginary(this->imaginary+x.imaginary);
        return y;
    }
    ComplexNum operator-(ComplexNum &x)
    {
        ComplexNum y;
        y.setReal(this->real-x.real);
        y.setImaginary(this->imaginary-x.imaginary);
        return y;
    }
    ComplexNum operator*(ComplexNum &x)
    {
        ComplexNum y;
        y.setReal(this->real*x.real-this->imaginary*x.imaginary);
        y.setImaginary(this->imaginary*x.real+this->real*x.imaginary);
        return y;
    }
    friend ostream&operator<<(ostream&,ComplexNum &x)
        {
        if(x.getImaginary()==0)
            return cout<<x.getReal();
        else if(x.getImaginary()<0)
            return cout<<x.getReal()<<x.getImaginary()<<"i";
        else if(x.getImaginary()>0)
            return cout<<x.getReal()<<"+"<<x.getImaginary()<<"i";
        return cout<<" ";
    }
};
    void main()
    {
        ComplexNum c1(10,5);
        ComplexNum c2(3,7);
        ComplexNum c3(0,0);
        cout<<"c1+c2="<<c1+c2<<endl;
        cout<<"c1-c2="<<c1-c2<<endl;
        cout<<"c1*c2="<<c1*c2<<endl;
        cout<<"c1*c1-c2*c2+c1*c2="<<c1*c1-c2*c2+c1*c2<<endl;
        cout<<"c3="<<c3<<endl;
    }