第一个小作业--复数运算
Plural_calculation.h
#include<stdio.h>
typedef struct {
float realpart;//实部
float imagepart;//虚部
}Complex;
void assin(Complex* A, float real, float image);//构造复数
void ADD(Complex* A, Complex* B, Complex* Add);//复数的相加
void Minus(Complex* A, Complex* B, Complex* Minus);//复数相减
void Multiply(Complex* A, Complex* B, Complex* Multiply);//复数的相乘
void Divide(Complex* A, Complex* B, Complex* Divide);//复数相除
/*****************************************************************
函数名称:void assin(Complex* A, float real, float image)
函数元素:Complex* A--复数存放结构体
float real--复数的实部
float image--复数的虚部
函数描述:构造一个复数
*****************************************************************/
void assin(Complex* A, float real, float image)
{
A->realpart = real;
A->imagepart = image;
}
/*****************************************************************
函数名称:void ADD(Complex* A, Complex* B, Complex* Add)
函数元素:Complex* A--复数1
Complex* B--复数2
Complex* Add--复数相加存放的结构体
函数描述:复数的相加
*****************************************************************/
void ADD(Complex* A, Complex* B, Complex* Add)
{
Add->realpart = A->realpart + B->realpart;
Add->imagepart = A->imagepart + B->imagepart;
}
/*****************************************************************
函数名称:void Minus(Complex* A, Complex* B, Complex* Minus)
函数元素:Complex* A--复数1
Complex* B--复数2
Complex* Minus--复数相加存放的结构体
函数描述:复数的相减
*****************************************************************/
void Minus(Complex* A, Complex* B, Complex* Minus)
{
Minus->realpart = A->realpart - B->realpart;
Minus->imagepart = A->imagepart - B->imagepart;
}
/*****************************************************************
函数名称:void Multiply(Complex* A, Complex* B, Complex* Multiply)
函数元素:Complex* A--复数1
Complex* B--复数2
Complex* Multiply--复数相加存放的结构体
函数描述:复数的相乘
*****************************************************************/
void Multiply(Complex* A, Complex* B, Complex* Multiply)
{
Multiply->realpart = A->realpart * B->realpart - A->imagepart * B->imagepart;
Multiply->imagepart = A->imagepart * B->realpart + A->realpart * B->imagepart;
}
/*****************************************************************
函数名称:void Divide(Complex* A, Complex* B, Complex* Divide)
函数元素:Complex* A--复数1
Complex* B--复数2
Complex* Multiply--复数相加存放的结构体
函数描述:复数的相除
*****************************************************************/
void Divide(Complex* A, Complex* B, Complex* Divide)
{
float tmp = B->realpart * B->realpart + B->imagepart * B->imagepart;
Divide->realpart = (A->realpart * B->realpart + A->imagepart * B->imagepart) / tmp;
Divide->imagepart = (A->imagepart * B->realpart - A->realpart * B->imagepart) / tmp;
}
main.c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include"Plural_calculation.h"
int main()
{
printf("**********************\n");
printf("*******复数运算*******\n");
printf("**********************\n");
printf("********菜单**********\n");
printf("**********请选择功能:\n");
printf("******1.复数相加*******\n");
printf("******2.复数相减*******\n");
printf("******3.复数相乘*******\n");
printf("******4.复数相除*******\n");
Complex Z1;
Complex Z2;
float real1=0, image1=0,real2=0, image2=0;
printf("请输入两个个复数的实部与虚部:");
(void)scanf("%f", &real1);
(void)scanf("%f", &image1);
(void)scanf("%f", &real2);
(void)scanf("%f", &image2);
assin(&Z1, real1, image1);
assin(&Z2, real2, image2);
Complex Result = { 0,0 };
int n;
printf("请选择功能:");
scanf("%d\n", &n);
switch (n)
{
case 1:
ADD(&Z1, &Z2, &Result);
printf("结果为:%f+%fi\n", Result.realpart, Result.imagepart);
break;
case 2:
Minus(&Z1, &Z2, &Result);
printf("结果为:%f+%fi\n", Result.realpart, Result.imagepart);
break;
case 3:
Multiply(&Z1, &Z2, &Result);
printf("结果为:%f+%fi\n", Result.realpart, Result.imagepart);
break;
case 4:
Divide(&Z1, &Z2, &Result);
printf("结果为:%f+%fi\n", Result.realpart, Result.imagepart);
break;
}
}
还有很多不足考虑不到的地方,慢慢学。