C语言 复数表示与求和

Python011

C语言 复数表示与求和,第1张

在数学中一个复数可以定义为 (z=a + bi) 的形式。 C 语言在 ISO C99 时就引入了复数类型。它是通过 complex.h 中定义的。 我们可以使用 complex , __complex__ , 或 _ComplexI 类型符号来表示

在C语言中有三种复数类型,分别为 float complex , double complex , long double complex 。他们之间 的区别就是表示复数中实部和虚步的数的数据类型不同。 complex 其实就是一个数组,数组中有两个元素,一个表示复数的实部,一个表示复数的虚部。

源代码如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

double sum(double* x)

void main()

{

double *a,s=0.0

a=(double*)malloc(sizeof(double))

*a=5

s=sum(a)

printf("求和的结果是: %lf\n",s)

}double sum(double* x)

{

int j=0

double s=0.0

for(j=0j<=3j++)

{

s=s+pow(*x,j)

}

s=s*2

return s

}

扩展资料

输入任意两个复数差与商的源代码如下

typedef struct{

float r

float im

Complex

Complex res

Complex* add(Complex* a, Complex* b) {

res.r = a->r + b->r

res.im = a->im + b->im

return &res

}

Complex* div(Complex* a, Complex* b) {

float d = (b->r*b->r + b->im*b->im)

res.r = (a->r*b->r   + a->im*b->im)/d

res.im = (a->im*b->r - a->r*b->im)/d

return &res

#include <stdio.h>

typedef struct {

    float r

    float i

}Complex

Complex readComlexNumber() {

    Complex n

    printf("Input real part:")

    scanf("%f", &n.r)

    printf("Input imaginary part:")

    scanf("%f", &n.i)

    return n

}

Complex sumComplex(Complex a, Complex b) {

    Complex c

    c.r = a.r + b.r

    c.i = a.i + b.i

    return c

}

Complex differeneComplex(Complex a, Complex b) {

    Complex c

    c.r = a.r-b.r

    c.i = a.i-b.i

    return c

}

Complex multiplyComplex(Complex a, Complex b) {

    Complex c

    c.i = a.r * b.i + a.i*b.r

    c.r = a.r * b.r - a.i*b.i

    return c

}

Complex divideComplex(Complex a, Complex b) {

    Complex c

    c.r = (a.r*b.r+a.i*b.i)/(b.r*b.r+b.i*b.i)

    c.i = (a.i*b.r-a.r*b.i)/(b.r*b.r+b.i*b.i)

    return c

}

void printComplex(Complex n) {

    printf("%.2f+%.2fi", n.r, n.i)

}

int main(){

    Complex a, b, c

    printf("Input Complex number a:\n")

    a = readComlexNumber()

    printf("Input Complex number b:\n")

    b = readComlexNumber()

    printf("The 2 Complex a & b is :\n")

    printComplex(a) printf("   and   ") printComplex(b)

    //sum

    c = sumComplex(a, b)

    printf("\n (a+b)=") printComplex(c)

    //diff

    c = differeneComplex(a, b)

    printf("\n (a-b)=") printComplex(c)

    //multiply

    c = multiplyComplex(a, b)

    printf("\n (a*b)=") printComplex(c)

    //divide

    c = divideComplex(a, b)

    printf("\n (a/b)=") printComplex(c)

    return 0

}

你在VC中得不到正确的结果是因为printf函数的描述符用错了,把%d改为%f

在TC中编译错误是因为TC比VC检查要严格,是一个标准的C编译器,而VC其实是一个VC++编译器

在TC中声明了结构之后定义结构变量不能省略struct关键字,如要省略,则必须给该结构类型起个别名。对于你的程序来说,只要把复数类型声明改为如下方式即可,你试试吧:

typedef struct {

double real

double imag

} complex