思路:
1复数的表示:用结构体实现
2复数的加减法:实部虚部分别相加减
复数的乘法:(a+bi)(c+di)=ac-bd+(ad+cb)i
复数的除法:(a+bi)(c+di)=(ac+bd)(cc+dd)+(bc-ad)(cc+d*d)
考虑分母为0的情况
3注意输出格式,考虑虚部为复数和虚部为0的情况
4用switch语句由用户自己选择要进行的操作
5用do…while循环实现多次运算
代码实现
#include#include //用结构体表示复数 typedef struct { double realPart; double imagPart; }complex; //定义一个复数 complex assign(double a, double b); //复数的加法 complex add(complex c1, complex c2); //复数的减法 complex sub(complex c1, complex c2); //复数的乘法 complex mul(complex c1, complex c2); //复数的除法 complex div(complex c1, complex c2); void display(complex c); int main() { double realPart, imagPart; complex c1, c2; int adjust=0; do { printf("--------------------------------n"); printf("欢迎您使用负数计算器n"); printf("请您输入复数的实部和虚部n"); scanf("%lf%lf", &realPart, &imagPart); c1 = assign(realPart, imagPart); display(c1); printf("请您输入第二个复数的实部和虚部n"); scanf("%lf%lf", &realPart, &imagPart); c2 = assign(realPart, imagPart); display(c2); printf("请您选择需要进行的操作n"); printf("1加法n2减法n3乘法n4除法n0退出复数计算器n"); scanf("%d", &adjust); if (adjust==1||adjust==2||adjust==3||adjust==4) { printf("您的计算结果是:"); } switch (adjust) { case 1: display(add(c1, c2)); break; case 2: display(sub(c1, c2)); break; case 3: display(mul(c1, c2)); break; case 4: display(div(c1, c2)); break; default: if (adjust == 0) { printf("谢谢使用"); } else { printf("输入的操作有误,请您重新输入"); } } } while (adjust != 0); printf("感谢您的使用,祝您生活愉快"); return 0; } //定义一个复数 complex assign(double a, double b) { complex c; c.realPart = a; c.imagPart = b; return c; } //复数的加法 complex add(complex c1, complex c2) { assign((c1.realPart + c2.realPart), (c1.imagPart + c2.imagPart)); } //复数的减法 complex sub(complex c1, complex c2) { assign((c1.realPart - c2.realPart), (c1.imagPart - c2.imagPart)); } //复数的乘法 complex mul(complex c1, complex c2) { assign((c1.realPart * c2.realPart - c1.imagPart * c2.imagPart), (c1.imagPart * c2.realPart + c1.realPart * c2.imagPart)); } //复数的除法 complex div(complex c1, complex c2) { double temp = (pow(c1.imagPart, 2) + pow(c2.imagPart, 2)); if (c2.imagPart!=0&&c2.realPart!=0) { assign((c1.realPart * c2.realPart + c1.imagPart * c2.imagPart) / temp, (c1.imagPart * c2.realPart - c1.realPart * c2.imagPart) / temp); } else { printf("除数为0,请重新输入"); } } //输出复数 void display(complex c) { if (c.imagPart > 0) { printf("%lf+%lfin", c.realPart, c.imagPart); } else if(c.imagPart<0) { printf("%lf%lfin", c.realPart, c.imagPart); } else { printf("%lfn", c.realPart); } }
运行结果显示:



