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

这篇具有很好参考价值的文章主要介绍了数据结构基础篇》》用c语言实现复数的八个基本运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

本专栏包括:

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

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

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

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

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

目录

问题描述:

基本要求:

实现提示:

数据结构定义:

输出代码规范化:

初始化提示界面:

复数求和:

复数求差:

复数相乘:

共轭复数:

复数相除:

实部,虚部:

完整代码演示:


问题描述:

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

基本要求:

        实现下列八种基本运算:

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

实现提示:

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

数据结构定义:

//定义一个结构体数组 
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);
                }
            }
        } 
}

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

初始化提示界面:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

  •  用户输入的格式为:

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

  • 用户输入的格式为:

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

复数求和:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

复数求差:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

复数相乘:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

共轭复数:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

复数相除:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

实部,虚部:

c语言复数运算,数据结构和算法,C语言,c语言,c++,算法

 

完整代码演示:

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

} 

本文的代码仍然存在不足的地方,如有错误,请指出。。。文章来源地址https://www.toymoban.com/news/detail-732185.html

到了这里,关于数据结构基础篇》》用c语言实现复数的八个基本运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 期末复习(3)C语言数据结构_图论基础

    目录 导言:  定义: 一、边和度的概念: 1.1 无向图中的边和度: 1.2 有向图中的边和度: 1.3 度序列和握手定理: 二、弧和度的关系: 2.1 有向图中的弧和度: 2.2 度序列和握手定理在有向图中的应用: 2.3 邻接矩阵和邻接表在有向图中的表示: 2.4 强连通图: 三、完全图:

    2024年02月03日
    浏览(41)
  • 数据结构:链表(Python语言实现)

    链表分为单链表、双链表、循环单链表和循环双链表。 本文以单链表为例,用python创建一个单链表数据结构,同时定义链表节点的增加、删除、查询和打印操作。 创建一个名为Node的节点类,节点类里面包含2个属性和1个方法。 分别为data数据域属性和next指针域属性。 has_va

    2024年02月16日
    浏览(52)
  • 数据结构:队列(Python语言实现)

    队列是一种 先进先出 的数据结构(特殊的线性结构),在队列 尾部 插入新元素,在队列 头部 删除元素。 一般队列的基本操作如下: create:创建空队列。 enqueue:将新元素加入队列的尾部,返回新队列。 dequeue:删除队列头部元素,返回新队列。 front:返回队列头部的元素

    2024年02月13日
    浏览(45)
  • 数据结构——队列(C语言实现)

    队列是一种特殊的线性结构,数据只能在一端插入,数据也只能在另一端进行删除。插入数据的那一端称之为队尾,插入数据的动作称之为入队。删除数据的那一端称之为队头,删除数据的动作称之为出列。队列遵守的是FIFO原则(Frist In First Out),即先进先出原则。 队列具

    2024年02月03日
    浏览(77)
  • 数据结构 队列(C语言实现)

            任其事必图其效;欲责其效,必尽其方。——欧阳修;本篇文章主要写的是什么是队列、以及队列是由什么组成的和这些组成接口的代码实现过程。( 大多细节的实现过程以注释的方式展示请注意查看 )    话不多说安全带系好,发车啦 (建议电脑观看) 。 附

    2024年02月11日
    浏览(52)
  • C语言实现队列--数据结构

    😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️ 💥个人主页:🔥🔥🔥大魔王🔥🔥🔥 💥所属专栏:🔥魔王的修炼之路–数据结构🔥 如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的 点赞 👍和 关注 💖,支持一

    2024年02月05日
    浏览(43)
  • 队列--C语言实现数据结构

    本期带大家一起用C语言实现队列🌈🌈🌈 队列是一种线性数据结构,它按照先进先出(FIFO)的原则进行操作。可以把队列想象成排队买票或者排队上公交车的队伍。 顺序队列 由一个连续的内存区域组成,可以存储多个元素。队列有两个指针,分别指向队头(Front)和队尾(

    2024年02月16日
    浏览(34)
  • 栈--C语言实现数据结构

    本期带大家一起用C语言实现栈🌈🌈🌈 栈是一种常见的数据结构,它遵循后进先出(Last In, First Out)的原则。可以将其类比为现实生活中的一摞书或者一叠盘子。 栈由一个连续的内存区域组成,可以存储一系列的元素。在栈的一端称为栈顶,另一端称为栈底。 栈的主要操作

    2024年02月16日
    浏览(38)
  • 堆--C语言实现数据结构

    本期带大家一起用C语言实现堆🌈🌈🌈 堆(Heap)是一种特殊的树状数据结构,它是一种完全二叉树。堆被广泛应用于优先队列、排序算法等领域。 堆的特点: 堆分为最大堆和最小堆两种类型。最大堆中,父节点的值大于或等于其子节点的值;最小堆中,父节点的值小于或

    2024年02月16日
    浏览(35)
  • 数据结构 栈(C语言实现)

            时间就是生命,时间就是速度,时间就是气力。——郭沫若;本章继续学习数据结构,本章主要讲了什么是栈以及栈的基本功能和实现方法。    话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的部分(不是死记

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包