数据结构和算法学习代码

第一个小作业--复数运算

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;
	}
}

 还有很多不足考虑不到的地方,慢慢学。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值