C语言中的复数-C基础

复数:

  复数比较详细的内容请参考:复数代数

  C支持复数的数学计算,复数Z可以在笛卡尔坐标表示为:Z=x+y*I;其中x和y是实数,I是虚数单位。数x被称为实部,数y为虚部。在c语言中,一个复数是有浮点类型表示的实部和虚部。两部分都具有相同的类型,无论是float,double或者long
double。

  1. float _complex:实虚都为float

  2. double _complex:实虚都为double

  3. long double _complex:实虚都为long double

如果在c 源文件中包含了头文件 complex.h ,complex.h定义了complex 和
I宏。宏定义complex和一个关键字_complex 同义。我们可以用complex代替_complex.

下面是个简单的例子,运行在debian 7 (32bit)

代码截图:

    

运行结果:

详细代码:

  1 /*
2 * Title : Complex Numbers
3 * Description: Work with complex numbers in c
4 * Author:Eric.Lee
5 *
6 */
7 #include<stdio.h>
8 #include<complex.h>
9
10 #define Get_Array_Length(tempArray)(sizeof(tempArray)/sizeof(tempArray[0]))
11
12 void GetResult(char operate,double complex x,double complex y)
13 {
14 double complex result = 0+0*I;
15 switch(operate)
16 {
17 case ‘+‘:
18 result = x+y;
19 break;
20 case ‘-‘:
21 result = x-y;
22 break;
23 case ‘*‘:
24 result = x*y;
25 break;
26 case ‘/‘:
27 result =x/y;
28 break;
29 default:
30 break;
31 }
32 printf("double complex x %c double complex y=%.2f+%.2fi\n",operate,creal(result),cimag(result));
33
34 }
35
36 int main()
37 {
38 double complex x = 10.0+15.0*I;
39 double complex y = 20.0-5.0*I;
40
41 printf("working with complex number:\n");
42 printf("Starting values:x=%.2f+%.2fi\ty=%.2f +%.2fi\n",creal(x),cimag(x),creal(y),cimag(y));
43 char operates[] = {‘+‘,‘-‘,‘*‘,‘/‘};
44 char * op = operates;
45 int i = 0;
46 int operateLength = Get_Array_Length(operates);
47 for(i=0;i<=operateLength-1;i++)
48 {
49 GetResult(*(op++),x,y);
50 }
51
52 return 0;
53 }

creal(x):得到复数的实部(对于 double),如果对于float,使用crealf(x),如果对于long double ,请使用
creall(x)

cimag(x):得到复数的虚部(对于double),如果对于float,使用crealf(x),如果对于long double ,请使用
creall(x)

此外还有一点值得注意的是:

              cos(), exp()
sqrt()同样也会有对应得复数方法,例如:ccos(),cexp(),csqrt()

本人是个初学者,如果博客中有任何错误或者有更好的技术知识,请多多指教!

C语言中的复数-C基础,布布扣,bubuko.com

时间: 2024-12-13 18:57:38

C语言中的复数-C基础的相关文章

C语言中复数运算及调用blas,lapack中复数函数进行科学计算

C语言中常用的数据类型主要int, float ,double ,char 等,但在科学运算中复数扮演着重要角色.这里讲下C语言中的复数运算以及如何调用blas,lapack库中的复数函数来进行科学计算. 1.C语言中的复数运算. C语言中若要用的复数,需要包含头文件complex.h,下面看看一些基本的例子 #include <stdio.h> #include"complex.h" int main() { complex a, b, c, d, f; a = 1 +

图像处理之基础---卷积傅立叶变换中的复数

整个看FFT过程中复数一直很折磨我. 原本的实数的东西通过复数表达很像旋转矩阵用quaternion来表达,尽管旋转vector还是要用matrix来做,但是通过用quaternion表达的旋转意义可以做插值等很多快速的操作,而且内存消耗也小,在做完这些操作之后再转成matrix用就好了. 复数表达也是类似. a+bi = M*(cos(theta)+sin(theta)*i)----极坐标 cos(x) + sin(x)*i = exp(x*i)----欧拉公式 这个用欧拉公式转出来的exp(

C语言/C++编程新手入门基础学习中链接类型

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制).创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组

C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数

1昨日回顾 2 多态的练习-圆的图形 3多态的练习-程序员薪资 4员工管理案例-抽象类和技术员工的实现 employee.h: employee.cpp: technician.h: technician.cpp: source.cpp: 5员工管理案例-销售和经理实现 修改employee.h: displayStatus不用虚函数了 salesman.h: salesman.cpp: manager.h: manager.cpp: 6员工管理案例-销售经理的实现 7 中午回顾 注意: 多继承

python基础知识 05 python语言中的大整数

第五课 python语言中的大整数 java中的int 最大可以处理 2^31 -1(2147483647) 最小呢-2^31 (-2147483647)但是在Java中可以使用BigInteger 来处理无线大的数 print(2 ** 60) 结果为 1152921504606846976 print(2 ** 600) 41495155688809929585124078636911611510124462322424368999956573296906528114129081463997

[转]C语言中自增自减运算符教学探究-中国论文网

摘要:C语言教学中,自增自减运算符运用得非常广泛,且具有一定的使用技巧和难度.在诸多运算符中,自增自减运算符是学生最难理解和最易出错的运算符.对自增自减运算符的功能和具体应用进行探究,以期为提高C语言教学效果提供帮助.中国论文网 http://www.xzbu.com/8/view-3865031.htm 关键词:C语言:自增自减运算符:教学效果 中图分类号:G434文献标识码:A文章编号:1672-7800(2012)012-0188-02 0引言 C语言编程设计中,若合理使用自增自减运算符,

python语言中的编码问题

在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多人选择出了问题直接在网上找答案,把别人的例子照搬过来,这是快速解决问题的一个好办法.然而,作为一个严谨求实的开发者,如果不从源头上彻底理解乱码产生的机制,并由此寻求解决问题的根本路径,那么永远不能从码农的阴影中摆脱出来.下面就来一起了解一下计算机编码问题的来龙去脉. ASCII 众所周知,计算机中的所有数据,不论是文字.图片.视频.还是音频文件,本质上最终都是按照类似 01010101 的二进制形式存储的.然而,计算机中的字符,并不能完全以这种

原码、反码、补码相关内容以及Java语言中是以哪一种码表示的

计算机中的数字是以二进制方式存储的,第一个二进制位为符号位,0代表正数,1代表负数 原码.反码.补码是计算机中存储数字使用的编码 1.原码.反码.补码的概念 原码:符号位加上这个数绝对值 例如正整数1的8位二进制原码为 00000001      负整数-1的8为二进制原码为 10000001 反码:正数的反码就是其本身,负数的反码就是在原码的基础上除符号位外所有的位取反 例如正整数1的8位二进制原码为 00000001 则其反码还为 00000001  负整数-1的8为二进制原码为 10000

C语言中关于指针的学习

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试.只要作到这些,指针也是不难掌握的. 指针的基本概念 在计算机中,所有的数据