【C++】复数计算器中的乘方如何实现~
#include <iostream>#include <stdio.h>#include <math.h>using namespace std;class complexClass{public: void input(){scanf_s("%f%fi",&RealPart,&ImaginePart);} void output() { if (RealPart==0 && ImaginePart==0){printf("0");} else if (RealPart==0){printf("%gi",ImaginePart);} else if (ImaginePart>0){printf("%g+%gi",RealPart,ImaginePart);} else {printf("%g%gi",RealPart,ImaginePart);} printf("\n"); } complexClass(float r=0,float i=0):RealPart(r),ImaginePart(i){} float RealPart,ImaginePart; float Re(){return RealPart;} float Im(){return ImaginePart;}};bool operator == (complexClass a,complexClass b){return (a.Re()==b.Re())&&(a.Im()==b.Im());}complexClass operator+(complexClass a,complexClass b){ complexClass c(a.Re()+b.Re(),a.Im()+b.Im()); return c;}complexClass operator-(complexClass a,complexClass b){ complexClass c(a.Re()-b.Re(),a.Im()-b.Im()); return c;}complexClass operator*(complexClass a,complexClass b){ complexClass c (a.Re()*b.Re()-a.Im()*b.Im(), a.Re()*b.Im()+a.Im()*b.Re()); return c;}complexClass operator^(complexClass a,complexClass b) { complexClass c; powf(a.Im()+a.Re(),b.Im()*b.Re()); return c;}complexClass operator/(complexClass a,complexClass b){ complexClass c; if (b==c) return c; float k=b.Re()*b.Re()+b.Im()*b.Im(); c.RealPart=a.Re()*b.Re()+a.Im()*b.Im(); c.RealPart/=k; c.ImaginePart=-a.Re()*b.Im()+a.Im()*b.Re(); c.ImaginePart/=k; return c;}complexClass abs(complexClass s){return sqrt(s.Re()*s.Re()+s.Im()*s.Im());}int main(){ cout<<"please input two complex number style like a+b which want calculate"<<"\n"; complexClass x,y; x.input();y.input(); cout<<"addition:"; (x+y).output(); cout<<"subtraction:"; (x-y).output(); cout<<"multiplication:"; (x*y).output(); cout<<"division:"; (x/y).output(); cout<<"power:"; (x^y).output(); return 0;}complexClass c;c = powf(a.Im()+a.Re(),b.Im()*b.Re());return c;