华中农业大学C++实验题

  • ​​求天数​​
  • ​​学校录取情况​​
  • ​​骑车快还是走路快​​
  • ​​停车费​​
  • ​​输出运算结果​​
  • ​​整数和​​
  • ​​反弹路径总和​​
  • ​​前n项之和​​
  • ​​判断正方形​​
  • ​​根据线索求出车号​​
  • ​​摘到的苹果的数目​​
  • ​​求唱歌比赛最大值​​
  • ​​翻译密文​​
  • ​​处理字符串​​
  • ​​求极值点​​
  • ​​判断完数​​
  • ​​求倒数天数​​
  • ​​求回文词​​
  • ​​输出字符串​​
  • ​​Fibonacci数列​​
  • ​​实现友元函数的功能​​
  • ​​设计日期类​​
  • ​​设计日期类​​
  • ​​设计计算器类​​
  • ​​设计复数类​​


华中农业大学的C++实验题,难度较低,对于初学者可以有较大的锻炼提升作用,帮助熟悉编程思维和提高写code能力。

itc具有查重功能,望大家以此为参考形成自己的编程思维

求天数

【问题描述】
输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。

#include <iostream>
using namespace std;
int main(){
int y,m;
cin>>y>>m;
if(y<3000&&y>=1900)
switch(m)
{
case 1:
case 3:
case 5:
case 8:
case 7:
case 10:
case 12:
cout<<31;break;
case 4:
case 6:
case 9:
case 11:
cout<<30;break;
case 2:
if((y%4==0&&y%100!=0)||(y%400==0))
cout<<29;
else
cout<<28;break;
default :
cout<<"Input error!\n"<<endl;break;
}
else cout << "Input error!" << endl;
return 0;
}

学校录取情况

【问题描述】
某高校录取研究生的要求是,新生的每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况
(“没有通过”、“自费生”、“公费生”三种情况)。

#include <iostream>
using namespace std ;
int main ()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int t=a+b+c+d;
if(a<60||b<60||c<60||d<60||t<340)
cout<<"No pass";
else{
if(t>=340&&t<370)
cout<<"Self-supported student";
else cout<<"Government-supported student";
}
return 0;

骑车快还是走路快

【问题描述】
在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。

#include<iostream>
using namespace std;
int main()
{
float a,b,c;
cin >> a;
b=50+a/3.0;
c=a/1.2;
if(b>c) cout<<"Walk";
if(b==c) cout<<"All";
if(b<c) cout<<"Bike";
return 0;
}

停车费

【问题描述】
一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a,cost;
cin >> a;
if(a<=3)
cost=5;
else if(a<20.5)
cost=5+(a-3)*2;
else cost=40;
cout<<fixed<<setprecision(2)<<cost<<endl;
return 0;
}

输出运算结果

【问题描述】
模拟计算器的功能,能根据用户输入的两个运算数和运算符(’+’、 ‘-’、 ‘*’ 或‘/ ’),对两个数进行相应的运算,输出运算结果。注意:除法运算‘/ ’的除数不能为0。

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
float a,b;
char c;
cin>>a>>b>>c;
switch(c)
{
case'+':cout<<a+b<<endl;break;
case'-':cout<<a-b<<endl;break;
case'*':cout<<a*b<<endl;break;
case'/':
if(b<fabs(1e-6))
cout<<"Error: divisor is 0!"<<endl;
else
cout<<a/b<<endl;
break;
default:
cout<<"Operator error!"<<endl;
break;
}
return 0;

整数和

【问题描述】
给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

#include<iostream>
using namespace std;
int main()
{
int a,b,s,n;
cin>>a;
n=1,s=0;
while(n<=5)
{
cin>>b;
if(b<a)
s=s+b;
else s=s+0;
n++;
}
cout<<s;
return 0;

反弹路径总和

【问题描述】
一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高?

#include<iostream>
using namespace std;
int main()
{
double s,h,n;
cin>>h;
n=1,s=0-h;
while(n<=5)
{
s=s+2*h;
h=h/2;
n++;
}
cout<<s<<" "<<h;
return 0;
}

前n项之和

【问题描述】
有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,… 求这个分数序列的前n项之和。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m;
double a,b,n,s,i;
cin>>n;
a=2,b=1,s=0,m=1;
while(m<=n)
{
s=a/b+s;
i=b;b=a,a=a+i;
m++;
}
cout<<fixed<<setprecision(4)<<s<<endl;
return 0;
}

判断正方形

【问题描述】
在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。

#include<iostream>
using namespace std;
int main()
{
double x,y;
cin>>x>>y;
while(x!=0&&y!=0)
{
if((x<=1&&x>=-1)&&(y<=1&&y>=-1))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
cin>>x>>y;
}
cout<<"yes"<<endl;
return 0;
}

根据线索求出车号

【问题描述】
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。

#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,e,m;
for(a=0;a<10;a++)
{
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
for(d=0;d<10;d++)
{
for(e=0;e<100;e++)
{
if(a==b&&c==d&&b!=c&&a*1000+b*100+c*10+d==e*e)
m=a*1000+b*100+c*10+d;
}
}
}
}
}
cout<<m;
return 0;
}

摘到的苹果的数目

【问题描述】
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

#include<iostream>
using namespace std;
int main()
{
int i,m,n,a[10];
m=0;
for(i=0;i<10;i++)
cin>>a[i];
cin>>n;
for(i=0;i<10;i++)
if(a[i]<=n+30)
m++;
cout<<m<<endl;
return 0;
}

求唱歌比赛最大值

【问题描述】
歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。

#include<iostream>
using namespace std;
int main()
{
int i;
double score[6],max,min,a,b;
a=0;
for(i=0;i<6;i++)
{cin>>score[i];
a=a+score[i];
}
max=score[0];
for(i=1;i<6;i++)
if(score[i]>max) max=score[i];
min=score[0];
for(i=1;i<6;i++)
if(score[i]<min) min=score[i];
a=a-max-min;
b=a/4;
cout<<b<<endl;
return 0;

}

翻译密文

【问题描述】
插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。
提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。

#include<iostream>
using namespace std;
int main()
{
int i;
char ci[100],pl[100];
cin>>ci;
for(i=0;i<100;i++)
{if(ci[i]=='\0')
break;
if(i%2==0)
pl[i/2]=ci[i];
}
cout<<pl;
return 0;
}

处理字符串

【问题描述】
输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。
要求用指针对字符串进行处理。

#include<iostream>
using namespace std;
int main()
{
char ci[20],*p;
int i;
cin>>ci;
p=&ci[0];
for(i=0;i<20;i++)
{
if(*(p+i)>='a'&&*(p+i)<='z')
*(p+i)=*(p+i)-'a'+'A';
else if(*(p+i)>='A'&&*(p+i)<='Z')
*(p+i)=*(p+i)-'A'+'a';

}
cout<<p;
return 0;
}

求极值点

【问题描述】
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
注意:数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。

#include<iostream>
using namespace std;
int main()
{
int k,i;
cin>>k;
int a[k];
for(i=0;i<k;i++)
cin>>a[i];
if(a[0]!=a[1])
cout<<0<<' ';
i=1;
while(i>=1&&i<(k-1))
{
if(a[i]>a[i-1]&&a[i]>a[i+1]||a[i]<a[i-1]&&a[i]<a[i+1])
cout<<i<<' ';
i++;
}
if(a[k-2]!=a[k-1])
cout<<k-1<<' ';
return 0;
}

判断完数

【问题描述】
判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。

#include<iostream>
using namespace std;
bool wanshu(int n)
{
int b=0;
for(int a=2;a<=n;a++)
{
if(n%a==0)
b=b+n/a;
}
if(b==n)
return true;
else
return false;
}
int main()
{
int x;
cin>>x;
if(wanshu(x)==true)
cout<<"yes";
else
cout<<"no";
return 0;
}

求倒数天数

【问题描述】
假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。已知伦敦奥运会的开幕日期是2012年7月27日。用户输入日期的范围必须是2012年1月1日— 2012年7月26日。要求程序中编写函数int CountDown(int year,int month,int day),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。
提示:所求天数= month这个月的总天数-day+(month+1到6月所有这些月份天数之和)+27。

#include<iostream>
using namespace std;
int main()
{
int CountDown(int year,int month,int day);
int a,b,c;
cin>>a>>b>>c;
if(a!=2012||b>7||(b==7&&c>27)) cout<<"ERROR!";
else cout<<CountDown(a,b,c);
return 0;
}
int CountDown(int year,int month,int day)
{
int x;
switch(month)
{
case 1:
x=31-day+178;break;
case 2:
x=29-day+149;break;
case 3:
x=31-day+118;break;
case 4:
x=30-day+88;break;
case 5:
x=31-day+57;break;
case 6:
x=30-day+27;break;
case 7:
x=27-day;break;
}
return x;
}

求回文词

【问题描述】
许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。在最权威的《牛津英语大词典》里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。英语的回文句更有趣味(忽略其中的标点符号)。最著名的一句为:“Madam,I’m Adam.”(小姐,我是亚当。)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。
现要求编写一个函数bool huiwen(char *p),判断输入的一个单词是否为回文词。p是指向要输入的字符串的指针,如果是返回true,否则返回false。

#include<iostream>
#include<cstring>
using namespace std;
char a[20];
int main()
{
char m;
cin>>a;
char *p=a;
bool huiwen(char *p);
m=huiwen(p);
if(m==true) cout<<"yes";
else cout<<"no";
return 0;
}
bool huiwen(char *p)
{
int len=strlen(p);
char b[20];
int i,j;
for(i=0,j=len-1;i<=len-1;i++,j--) {b[i]=a[j];}
i++;
b[i]='\0';
if(strcmp(a,b)==0) return true;
else return false;
}

输出字符串

【问题描述】
编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:
void mystr(char c,int n, char *p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。
要求:编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
void mystr(char c,int n,char *p)
{
int i;
for(i=0;i<n;i++) cout<<c;
}
int main()
{
char c,*p;
int n;
cin>>c>>n;
mystr(c,n,p);
return 0;
}

Fibonacci数列

【问题描述】
有一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子长到第3个月后每个月又生1对兔子。假设所有兔子都不死,问每个月兔子的总对数为多少?
提示:不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。每对老兔子每个月会生1对小兔子。因此,每个月的兔子总数依次为1,1,2,3,5,8,13,…。这就是Fibonacci数列。该数列的递归定义如下:f(n)=1 (n等于1或2);f(n)= f(n-1)+ f(n-2) (n>2)
请编写递归函数int fib(int n),求出第n个月兔子的总对数。

#include<iostream>
using namespace std;
int fib(int n)
{
int a;
if(n>=3) a=fib(n-1)+fib(n-2);
else a=1;
return a;
}
int main()
{
int n,a;
cin>>n;
a=fib(n);
cout<<a;
return 0;
}

实现友元函数的功能

【问题描述】
仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。并在主函数中增加输入两点作为友元函数的实参。
其主函数如下:

int  main()
{
float p1_x,p1_y,p2_x,p2_y;
//输入四个点
cin>>p1_x>>p1_y>>p2_x>>p2_y;
point p1(p1_x,p1_y),p2(p2_x,p2_y);
cout<<Distance(p1,p2)<<endl;
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
point(float p1_xp2_x=0,float p1_yp2_y=0) { X=p1_xp2_x; Y=p1_yp2_y; }
friend float Distance(point &a,point &b);

private:
float X,Y;
};
float Distance(point &a,point &b)
{
float dx=a.X-b.X;
float dy=a.Y-b.Y;
return (float)sqrt(dx*dx+dy*dy);
}
int main()

{

float p1_x,p1_y,p2_x,p2_y;

cin>>p1_x>>p1_y>>p2_x>>p2_y;

point p1(p1_x,p1_y),p2(p2_x,p2_y);

cout<<Distance(p1,p2)<<endl;

return 0;

}

设计日期类

【问题描述】
根据以下主函数的功能来设计日期类CDateInfo,使其能正确运行。类CDateInfo中应该具有描述年、月、日的三个数据成员和相应的成员函数。

int main()
{
CDateInfo data1,data2(2011,10,10); //定义对象data1和data2
//分别调用类的不带参数的构造函数和带3个参数的构造函数对其数据成员进行初始化
//date1的数据成员未初始化时,其年月日用默认值2000,1,1来继续初始化。
int y,m,d;
cin>>y>>m>>d; //输入年月日值
data1.SetDate(y,m,d); //设置data1的年月日为y,m,d
data1.GetDate(); //按year-month-day的格式显示data1的年月日
data2.GetDate(); //按year-month-day的格式显示data2的年月日为“2011-10-10”
return 0;
}
#include<iostream>
using namespace std;
class CDateInfo
{
public:
CDateInfo(int y=2000,int m=1,int d=1){year=y,month=m,day=d;}
void SetDate(int y,int m,int d)
{
year=y,month=m,day=d;
}
void GetDate()
{
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
private:
int year,month,day;
};
int main()

{

CDateInfo data1,data2(2011,10,10);
int y,m,d;

cin>>y>>m>>d;

data1.SetDate(y,m,d);

data1.GetDate();

data2.GetDate();

return 0;

}

设计日期类

【问题描述】
根据以下主函数的功能来设计日期类Student,使其能正确运行。类Student中应该具有描述学生姓名、性别、年龄的三个数据成员和相应的成员函数。

int main()
{
Student Zhang_San; //创建Student类对象Zhang_San
char*chOne;
int iSex;
unsigned iOld;
chOne=new char[11]; //创建动态字符数组用来存放姓名,指针chOne指向该数组
cin>>chOne; //输入姓名,存放在chOne所指向的动态字符数组中
cin>>iSex; //输入性别,输入1表示性别为“男”,输入0表示性别为“女”
cin>>iOld; //输入年龄
Zhang_San.SetName(chOne); //用输入的姓名设置对象Zhang_San用来表示姓名的数据成员
Zhang_San.SetGender(iSex); //设置对象Zhang_San用来表示性别的数据成员
Zhang_San.SetAge(iOld); //设置对象Zhang_San用来表示年龄的数据成员
cout<<endl;
Zhang_San.GetName(chOne); //调用GetName(char *)成员函数将对象Zhang_San表示姓名的数据成员值
//存放到chOne所指向的动态字符数组中
cout<<"Zhang_San's name is "<<chOne<<endl; //显示姓名
cout<<"Zhang_San's gender is "<<Zhang_San.GetGender()<<endl; //显示性别:1(男),0(女)
cout<<"Zhang_San's age is "<<Zhang_San.GetAge()<<endl; //显示年龄
delete []chOne;
return 0;
}
#include<iostream>
using namespace std;
class Student
{
private:
char *name;
int sex,age;
unsigned old;
public:
void SetName(char *p)
{
name=p;
}
void SetGender(int iSex)
{
sex=iSex;
}
void SetAge(int iOld)
{
age=iOld;
}
void GetName(char *p)
{
p=name;
}
int GetGender()
{
return sex;
}
int GetAge()
{
return age;
}
};
int main()

{

Student Zhang_San; //创建Student类对象Zhang_San

char*chOne;

int iSex;

unsigned iOld;

chOne=new char[11]; //创建动态字符数组用来存放姓名,指针chOne指向该数组

cin>>chOne; //输入姓名,存放在chOne所指向的动态字符数组中

cin>>iSex; //输入性别,输入1表示性别为“男”,输入0表示性别为“女”

cin>>iOld; //输入年龄

Zhang_San.SetName(chOne); //用输入的姓名设置对象Zhang_San用来表示姓名的数据成员

Zhang_San.SetGender(iSex); //设置对象Zhang_San用来表示性别的数据成员

Zhang_San.SetAge(iOld); //设置对象Zhang_San用来表示年龄的数据成员

cout<<endl;

Zhang_San.GetName(chOne); //调用GetName(char *)成员函数将对象Zhang_San表示姓名的数据成员值

//存放到chOne所指向的动态字符数组中

cout<<"Zhang_San's name is "<<chOne<<endl; //显示姓名

cout<<"Zhang_San's gender is "<<Zhang_San.GetGender()<<endl; //显示性别:1(男),0(女)

cout<<"Zhang_San's age is "<<Zhang_San.GetAge()<<endl; //显示年龄

delete []chOne;

return 0;

}

设计计算器类

【问题描述】
根据以下主函数的功能来设计计算器类Calculator,使其能正确运行。类Calculator中应该具有描述运算数的a和b及其表示a和b运算结果的三个数据成员和相应计算并显示结果的成员函数。

int main( )
{
float a, b;
cin>>a>>b; //从键盘输入运算数a、b
Calculator cal( a , b ); //用a和b初始化创建的Calculator类对象cal
cal.add( ); //计算a+b并显示结果
cal.subtract( );
cal.multiply( );
cal.divide( );
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
class Calculator
{
public:
Calculator(float ,float );
float add( );
float subtract( );
float multiply( );
float divide();
private:
float a,b,r;
};
Calculator::Calculator(float x,float y)
{
a=x;
b=y;
}
float Calculator:: add()
{
r=a+b;
cout<<a<<"+"<<b<<"="<<r<<endl;
}
float Calculator::subtract()
{
r=a-b;
cout<<a<<"-"<<b<<"="<<r<<endl;
}
float Calculator:: multiply()
{
r=a*b;
cout<<a<<"*"<<b<<"="<<r<<endl;
}
float Calculator::divide()
{
r=a/b;
cout<<a<<"/"<<b<<"="<<r<<endl;
}
int main( )

{

float a, b;

cin>>a>>b; //从键盘输入运算数a、b

Calculator cal( a , b ); //用a和b初始化创建的Calculator类对象cal

cal.add( ); //计算a+b并显示结果

cal.subtract( );

cal.multiply( );

cal.divide( );

return 0;

}

设计复数类

【问题描述】
根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±bi”格式显示复数的成员函数print()。设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。

int main()
{
float x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部
Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1
Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)
Sub(imag1,imag2); //求两个复数之差并显示运算结果
return 0;
}
#include<iostream>
using namespace std;
class Imaginary
{
public:
Imaginary(float a,float b){x=a;y=b;}
friend float Add(Imaginary c1,Imaginary c2);
friend float Sub(Imaginary c1,Imaginary c2);
private:
float x,y;
};
float Add(Imaginary c1,Imaginary c2)
{
cout<<c1.x+c2.x<<"+"<<c1.y+c2.y<<"i"<<endl;
}
float Sub(Imaginary c1,Imaginary c2)
{
cout<<c1.x-c2.x<<c1.y-c2.y<<"i"<<endl;
}
int main()

{

float x1,y1,x2,y2;

cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部

Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1

Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)

Sub(imag1,imag2); //求两个复数之差并显示运算结果

return 0;

}