思路:
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;
/* data */
}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+%lfi\n", c.realPart, c.imagPart);
}
else if(c.imagPart<0)
{
printf("%lf%lfi\n", c.realPart, c.imagPart);
}
else
{
printf("%lf\n", c.realPart);
}
}
【一些小实例|复数的加减乘除C语言实现】运行结果显示:
文章图片
推荐阅读
- linux|Linux kernel移植笔记
- 《LeetCode算法全集》|?算法入门?《二分枚举》中等03 —— LeetCode 1539. 第 k 个缺失的正整数
- 经典程序|利用C语言创建数据结构中链表的遍历及其基本操作
- C语言|C语言求水仙花数
- C语言|C语言求输入字符的字母和数字个数
- QT|QT实现TCP通信
- C语言必学的数据结构|还在抱怨数据结构难? 一文带你搞懂如何AC算法题(2022版)
- C语言|C语言开发专题(56个案例)-程序设计 - 课程设计
- 编程题|C语言——动态分配数组malloc的使用及读走回车换行符问题