数据结构基础篇》》用c语言实现复数的八个基本运算

news2024/9/29 1:29:41

数据结构开讲啦!!!🎈🎈🎈

本专栏包括:

  • 抽象数据类型
  • 线性表及其应用
  • 栈和队列及其应用
  • 串及其应用
  • 数组和广义表
  • 树、图及其应用
  • 存储管理、查找和排序

将从简单的抽象数据类型出发,深入浅出地讲解复数,海龟作图

到第二讲线性表及其应用中会讲解,运动会分数统计,约瑟夫环,集合的并、交和差运算,一元稀疏多项式计算器,池塘夜降彩色雨

到最后一步一步学会利用数据结构和算法知识独立完成校园导航咨询的程序。

希望我们在学习的过程中一起见证彼此的成长。💡💡💡

目录

问题描述:

基本要求:

实现提示:

数据结构定义:

输出代码规范化:

初始化提示界面:

复数求和:

复数求差:

复数相乘:

共轭复数:

复数相除:

实部,虚部:

完整代码演示:


问题描述:

        设计一个可进行复数运算的演示程序

基本要求:

        实现下列八种基本运算:

  • 由输入的实部和虚部生成一个复数;
  • 两个复数求和;
  • 两个复数球差;
  • 两个复数求积;
  • 从已知复数中分离出实部;
  • 从已知复数中分离出虚部;
  • 求已知复数的共轭复数;
  • 两个复数相除;

实现提示:

        定义复数为由两个相互之间存在次序关系的实数构成的抽象数据类型,则可以利用实数的操作来实现复数的操作。

数据结构定义:

//定义一个结构体数组 
struct complex{
    double a=0;
    double b=0;
}C[100];

这里一定要初始化,不然输入0时候,程序会出错。

输出代码规范化:

complex beautiful(complex c){
    if(c.a==0&&c.b==0){
            printf("0\n");
        }else{
            if(c.a == 0){
                printf("%lfi\n",c.b);
            }else if(c.b == 0){
                printf("%lf\n",c.a);
            }else{
                if(c.b<0){
                    printf("%lf%lfi\n",c.a,c.b);
                }else{
                    printf("%lf%+lfi\n",c.a,c.b);
                }
            }
        } 
}

因为考虑到输出结果,尽量规范化,所以这里把不同的复数的输出格式放到一个函数里。

初始化提示界面:

  •  用户输入的格式为:

        3.1,0;4.22,8.9;就可得到两个不同的复数3.1 4.22+8.9i。

  • 用户输入的格式为:

        0;0;就得到两个实部虚部都为0的复数。

复数求和:

复数求差:

复数相乘:

共轭复数:

复数相除:

实部,虚部:

 

完整代码演示:

#include<stdio.h>
#include<math.h>

//定义一个结构体数组 
struct complex{
	double a=0;
	double b=0;
}C[100];


complex beautiful(complex c){
	if(c.a==0&&c.b==0){
			printf("0\n");
		}else{
			if(c.a == 0){
				printf("%lfi\n",c.b);
			}else if(c.b == 0){
				printf("%lf\n",c.a);
			}else{
				if(c.b<0){
					printf("%lf%lfi\n",c.a,c.b);
				}else{
					printf("%lf%+lfi\n",c.a,c.b);
				}
			}
		} 
}

complex create(complex C[2]){
	for(int i = 0;i<2;i++){
//		printf("%lf,%lf,%lf,%lf",C[0].a,C[0].b,C[1].a,C[1].b);
		if(int(C[i].a)==0&&int(C[i].b)==0){
			printf("0\n");
		}else{
			if(C[i].a == 0){
				printf("%lfi\n",C[i].b);
			}else if(C[i].b == 0){
				printf("%lf\n",C[i].a);
			}else{
				if(C[i].b<0){
					printf("%.1lf%lfi\n",C[i].a,C[i].b);
				}else{
					printf("%lf% + lfi\n",C[i].a,C[i].b);
				}
			}
		} 
	}
	return C[1];
} 

complex sum(complex C[2]){
	complex res;
	res.a = C[0].a+C[1].a;
	res.b = C[0].b+C[1].b;
	printf("两个复数相加的结果为:") ;
	beautiful(res); //调用beautiful方法来实现复数的标准输出,一下方法同理 
	return res;
} 

complex mins(complex C[2]){
	complex res;
	res.a = C[0].a-C[1].a;
	res.b = C[0].b-C[1].b;
    printf("两个复数相减的结果为:") ;
//	printf("%lf",res.a); 
	beautiful(res); 
	return res;
} 

complex multiple(complex C[2]){
	complex res;
	res.a = C[0].a*C[1].a-C[0].b*C[1].b;
	res.b = C[0].a*C[1].b+C[0].b*C[1].a;
	printf("两个复数相乘的结果为:") ;
	beautiful(res); 
	return res;
	
}

complex gongge(complex c){
	complex res;
	res.a = c.a;
	res.b = -1*c.b;
	printf("共轭复数为:") ;
	beautiful(res); 
	return res;
} 

complex divide(complex C[2]){
	complex res;
	double z = C[1].a*C[1].a+C[1].b*C[1].b; 
	res.a = (C[0].a*C[1].a+C[0].b*C[1].b)/z;
	res.b = (C[0].b*C[1].a-C[1].b*C[0].a)/z;
//	printf("%lf %lf",res.a,res.b) ;
	printf("两个复数相除的结果为:");
	beautiful(res); 
	return res;
}

int  real(complex c){
	printf("实部为:%lf\n",c.a);
	return c.a;
}

int virtuals(complex c){
	printf("虚部为:%lf\n",c.b);
	return c.b;
}

int main(){
	printf("请输入两个复数的实部和虚部:\n");
	printf("示例:\n3.1,0;4.22,8.9;\n");
	printf("你输入的第一个复数为:3.1\n");
	printf("你输入的第二个复数为:4.22+8.9i\n"); 
	printf("----------请开始输入吧!----------\n");
	//定义两个复数 
	complex C[2];
	scanf("%lf,%lf;%lf,%lf;",&C[0].a,&C[0].b,&C[1].a,&C[1].b);
	create(C);
//	printf("%lf,%lf,%lf,%lf",C[0].a,C[0].b,C[1].a,C[1].b);//这一行的主要目的是检验输入的数据是不是符合要求的。 
	sum(C);//两个复数求和
	mins(C);//两个复数求差
	multiple(C);//两个复数求积
	//分离出两个实部 
	real(C[0]);
	real(C[1]);
	//分离出两个虚部
	virtuals(C[0]);
	virtuals(C[1]);
	//求出两个复数的共轭
	gongge(C[0]);
	gongge(C[1]);
	//两个复数相除
	divide(C);
	 
	return  0;

} 

本文的代码仍然存在不足的地方,如有错误,请指出。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

B-013 缓启动电路设计

缓启动电路设计1 简介2 案例分析2.1 电路说明2.2 原理分析3 电路参数设定说明1 简介 缓启电路的供电是由一个PMOS控制通断的&#xff0c;软启动的设计是让PMOS的导通时间变缓&#xff0c;电路上的做法是在PMOS的栅极和源极之间接一个合适的电容&#xff0c;PMOS的导通时间就会…

Arcgis中创建Python脚本工具

文章目录创建工具步骤第一步&#xff1a;第二步&#xff1a;第三步&#xff1a;定义工具工具箱Toolbox工具类1、__init__2、getParameterInfo3、isLicensed4、updateParameters5、updateMessage6、execute进度条的使用代码相比于自定义工具箱的源脚本和参数定义难以集中管理的缺…

中国专利电子申请网站系统环境配置方法

一、在线平台使用环境要求 支持的操作系统、浏览器、office的版本如下&#xff0c;必须匹配对应的版本&#xff1a; 操作系统&#xff1a;WINDOWS XP、WINDOWS 7、WINDOWS 8 浏览器&#xff1a;IE8、IE9、IE10 文档编辑软件&#xff1a;OFFICE2003、OFFICE2007 强烈推荐使用中…

1. Maven基础

1. Maven简介 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09; 提供了一套依赖管理机制 1.1…

Allegro快速编辑丝印文字操作指导

Allegro快速编辑丝印文字操作指导 Allegro支持丝印文字的编辑,下面介绍快速编辑丝印文字的两种方法如下 以编辑下方丝印文字为例 方法一: 选择Text edit 命令 点击丝印文字,丝印会被高亮起来 输入需要更改后的文字,如下 右击选择done 文字被更改好了 方法二 选择se…

Function composition

In mathematics, function composition is an operation  ∘  that takes two functions f and g, and produces a function h g  ∘  f such that h(x) g(f(x)). In this operation, the function g is applied to the result of applying the function f to x. That is…

van-uplaoder保存文件到后端,回显后端接口返回的数据

实现功能&#xff1a;在移动端使用van-uploader组件上传图片&#xff0c;然后调用接口保存到后端数据库&#xff0c;提交保存信息成功后&#xff0c;调用另外的接口返回数据用来回显uploaded的文件&#xff0c;&#xff08;一般正常的返回数据的接口是个图片地址&#xff0c;可…

15 CPP函数重载

函数重载的细节&#xff1a; 1 使用重载函数时&#xff0c;如果数据类型不匹配&#xff0c;C尝试使用类型转换与形参进行匹配&#xff0c;如果转换后有多个函数能匹配上&#xff0c;编译将报错。 2 引用可以作为函数重载的条件&#xff0c;但是调用重载函数的 时候&#xff0…

javaSE - 认识字符串(String class),String类里面方法的使用,下半部分

一、字符, 字节与字符串 1.1、字符与字符串之间进行转换 字符串内部包含一个字符数组&#xff0c;String 可以和 char[] 相互转换 将整个字符数组转换成字符串 public static void main(String[] args) {char[] chars {a,b,c,d,e,f,g};String str new String(chars);Sys…

Sulfo-NHS-SS-biotin,CAS:325143-98-4介绍,生物素双硫键琥珀酰亚胺

英文名称&#xff1a;Sulfo-NHS-SS-biotin 化学式&#xff1a;C19H27N4NaO9S4 分子量&#xff1a;606.7 CAS&#xff1a;325143-98-4 纯度&#xff1a;95% 储存条件&#xff1a;-20C 结构式&#xff1a; 简介&#xff1a;磺基NHS SS生物素是一种可切割试剂&#xff0c;用…

【剧前爆米花--爪哇岛寻宝】抽象类和接口(上)——理论及逻辑理解

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于抽象类和接口的文章&#xff0c;在本篇文章中我会介绍其相关的定义和语法&#xff0c;并且揭示接口和抽象类的运行逻辑&#xff0c;提高对面对象编程的理解。 目录 抽象…

吴恩达week6 ~批量梯度下降 指数加权平均 动量梯度下降 学习率衰减 Adam

文章目录前言一、小批量梯度下降 mini-batch1、batch gradient descent2、stochastic gradient descent3、mini-batch gradient descent二、指数加权平均1.什么是指数加权平均2、理解指数加权平均3、与普通求平均值的区别4、指数加权平均的偏差修正三、gradient descent with m…

Allegro批量替换过孔类型操作指导

Allegro批量替换过孔类型操作指导 Allegro支持批量替换过孔类型,具体操作如下 例如需要把这些VIA10的过孔全部替换成VIA8的过孔 选择菜单上面的Tool-padstack-Group edit 右击选择temp Group 选中需要替换的过孔 选完之后右击选择complete 弹出Padstack Map窗口,modify…

java中多线程、并发、并行、线程与进程、线程调度、创建线程的方式

多线程&#xff1a; 多线程比单线程快&#xff0c;前面简单介绍过&#xff1a;集合如果是不安全的&#xff0c;那么它就是多线程的&#xff0c;了解多线程之前&#xff0c;先了解什么是并发和并行。 并发&#xff1a;指两个或多个事件在同一个时间段内发生。 并行&#xff1…

高通平台开发系列讲解(AtCoP篇)AtCoP架构简介

文章目录 一、ATCoP简介二、ATCoP架构三、流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇讲介绍高通ATCoP的架构。 一、ATCoP简介 ATCoP(AT Command Processor)是高通平台对于AT命令处理的模块,通过它,我们可以实现对AT命令的修改和新增。ATCoP接收从串口…

[附源码]Python计算机毕业设计公司办公自动化系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

跟大佬展开激励讨论String的不可变性

目录 大佬证明&#xff1a; 我的证明&#xff1a; 后续 什么是不可变&#xff1f; String为什么不可变 为什么要设计成为不可变的呢&#xff1f; 1.首先我们最先可以想到的Java主要做的就是安全 2.其次是字符串常量池的需要 String真的不可变吗&#xff1f; ps&#…

平淡无奇,2022年终总结

1前言 一年又一年&#xff0c;时间过得太快啦&#xff01; 最近总是想着2022年的点点滴滴&#xff0c;一年时光不得写点什么不一样的&#xff0c;可是思前想后觉得这一年也没什么不一样的啊。所以呢&#xff0c;2022年终总结标题就取名为平淡无奇。 人一生最重要的是什么&#…

Java Servlet + H2数据库之集成环境配置

在 EclipseMavenTomcat 集成开发环境配置 搭建了一个Servlet的开发环境&#xff0c;整合Tomcat 作为Web容器。如何要加入数据库开发要怎么处理呢&#xff1f; 在实际开发中&#xff0c;一般会选择MySQL&#xff0c;Oracle 等数据库&#xff0c; 但是如果只是学习和演示&#x…