用c#实现复数的加减乘除_用C实现复数

用c#实现复数的加减乘除

在本文中,我将向您展示一种使用C编程语言实现复数的方法。 请注意,使用此处提供的代码没有任何保证。

复数是一个数字,例如z,表示z = realPart + i * imaginaryPart,其中i是虚数单位,有时用j表示。 另外,i * i = -1,这在找到两个复数的乘积/除法时很重要。

自然,我们可以将复数实现为结构:

/* Definition of a Complex number: */
typedef struct complex {
    double realPart;
    double imaginaryPart;
} Complex;
我们可以按如下方式将接口与实现分开。

首先,我们有标题

Complex.h ,它定义了Complex结构并包含操作一个或多个Complex数字的函数的原型:
/* Complex.h */ 
#ifndef COMPLEX_H
#define COMPLEX_H 
/* Definition of a Complex number: */
typedef struct complex {
    double realPart;
    double imaginaryPart;
} Complex; 
/* Prototypes for functions to manipulate Complex number(s) (these functions are implemented in file Complex.c): */
Complex addition( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 );
Complex subtraction( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 );
Complex multiplication( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 );
Complex division(  const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 );
void print( const Complex *pointerToComplexNumber ); 
#endif
文件Complex.c实现了以上功能:
/* Complex.c */ 
#include <stdio.h>
#include "Complex.h" 
/* Adds two Complex numbers, returning a new one, without modifying the ones received: */
Complex addition( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 )
{
    Complex complexNumber3; 
    complexNumber3.realPart = pointerToComplexNumber1->realPart + pointerToComplexNumber2->realPart;
    complexNumber3.imaginaryPart = pointerToComplexNumber1->imaginaryPart + pointerToComplexNumber2->imaginaryPart; 
    return complexNumber3;
} 
/* Subtracts two Complex numbers, returning a new one, without modifying the ones received: */
Complex subtraction( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 )
{
    Complex complexNumber3; 
    complexNumber3.realPart = pointerToComplexNumber1->realPart - pointerToComplexNumber2->realPart;
    complexNumber3.imaginaryPart = pointerToComplexNumber1->imaginaryPart - pointerToComplexNumber2->imaginaryPart; 
    return complexNumber3;
} 
/* Multiplies two Complex numbers, returning a new one, without modifying the ones received: */
Complex multiplication( const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 )
{
    Complex complexNumber3; 
    complexNumber3.realPart = pointerToComplexNumber1->realPart * pointerToComplexNumber2->realPart -
        pointerToComplexNumber1->imaginaryPart * pointerToComplexNumber2->imaginaryPart; 
    complexNumber3.imaginaryPart = pointerToComplexNumber1->realPart * pointerToComplexNumber2->imaginaryPart +
        pointerToComplexNumber1->imaginaryPart * pointerToComplexNumber2->realPart; 
    return complexNumber3;
} 
/* Divides two Complex numbers, returning a new one, without modifying the ones received: */
Complex division(  const Complex *pointerToComplexNumber1, const Complex *pointerToComplexNumber2 )
{
    Complex complexNumber3;
    double commonDenominator = pointerToComplexNumber2->realPart * pointerToComplexNumber2->realPart +
        pointerToComplexNumber2->imaginaryPart * pointerToComplexNumber2->imaginaryPart; 
    complexNumber3.realPart = ( pointerToComplexNumber1->realPart * pointerToComplexNumber2->realPart +
        pointerToComplexNumber1->imaginaryPart * pointerToComplexNumber2->imaginaryPart ) / commonDenominator; 
    complexNumber3.imaginaryPart = ( pointerToComplexNumber1->imaginaryPart * pointerToComplexNumber2->realPart -
        pointerToComplexNumber1->realPart * pointerToComplexNumber2->imaginaryPart ) / commonDenominator; 
    return complexNumber3;
} 
/* Prints a Complex number in the form ( realPart ) + i( imaginaryPart ), without modifying it: */
void print( const Complex *pointerToComplexNumber )
{
    printf( "( %.4f ) + i( %.4f )", pointerToComplexNumber->realPart, pointerToComplexNumber->imaginaryPart );
}
最后,我们有一个名为ComplexTest.c的文件,该文件在主函数中测试文件Complex.cComplex.h ,这是我们C程序的起点:
/* ComplexTest.c */ 
#include <stdio.h>
#include "Complex.h" 
int main( void )
{
    Complex number1;
    Complex number2;
    Complex sumOfNumber1WithNumber2;
    Complex subtractionOfNumber2FromNumber1;
    Complex multiplicationOfNumber1WithNumber2;
    Complex divisionOfNumber1PerNumber2; 
    number1.realPart = 1.2343;
    number1.imaginaryPart = 4.7621; 
    number2.realPart = -3.213;
    number2.imaginaryPart = -9.8; 
    sumOfNumber1WithNumber2 = addition( &number1, &number2 );
    subtractionOfNumber2FromNumber1 = subtraction( &number1, &number2 );
    multiplicationOfNumber1WithNumber2 = multiplication( &number1, &number2 );
    divisionOfNumber1PerNumber2 = division( &number1, &number2 ); 
    printf( "Number1 = " );
    print( &number1 );
    printf( "\nNumber2 = " );
    print( &number2 );
    printf( "\nNumber1 + Number2 = " );
    print( &sumOfNumber1WithNumber2 );
    printf( "\nNumber1 - Number2 = " );
    print( &subtractionOfNumber2FromNumber1 );
    printf( "\nNumber1 * Number2 = " );
    print( &multiplicationOfNumber1WithNumber2 );
    printf( "\nNumber1 / Number2 = " );
    print( &divisionOfNumber1PerNumber2 );
    putchar( '\n' ); 
    return 0;
}
要使用Visual Studio 2013编译该程序,请从命令行打开VS2013的“开发人员命令提示符”,转到上述三个文件所在的目录,然后输入命令cl ComplexTest.c Complex.c。

然后,使用以下命令运行程序

综合测试

翻译自: https://bytes.com/topic/c/insights/956447-implementation-complex-numbers-c

用c#实现复数的加减乘除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值