_Complex关键字可以提供比较方便的复数运算,例如:
#include <complex.h>
double imaginary z=5.3I
注意事项:
1. 每个程序中一定包含main()函数,尽管C语言中对函数命名没有限制。
2. printf函数永远不会自动换行,只能用\n来实现, 回车键进行的换行在编译中会出现错误信息。
3. 在vs2008中编译,测试需要加 system("pause");来暂停dos自动退出导致的printf无法显示。
4. 所有自定义变量必须声明才能使用。
扩展资料:
在数学中,虚数是对实数系的扩展。利用复数可以构建四维坐标系,四维坐标系是三维实数坐标系与三维虚数坐标系组合而成的。三维实数坐标系上的点与四维复数坐标系存在映射对应关系,每一个实数坐标点对应两个不同的四维坐标点。因此,虚数只有在四维坐标中才具有现实的数值意义。
我们可以在平面直角坐标系中画出虚数系统。如果利用横轴表示全体实数,那么纵轴即可表示虚数。整个平面上每一点对应着一个复数,称为复平面。横轴和纵轴也改称为实轴和虚轴。在此时,一点P坐标为P(a,bi),将坐标乘上i即点绕圆心逆时针旋转90度。
虚数单位“i”首先为瑞士数学家欧拉所创用,到德国数学家高斯提倡才普遍使用。
#include<stdio.h>void xushu(int a,int b,int c,int d)
{
int num1,num2
num1=a*d+b*c
num2=-(a*c)+b*d
if(num2>0)
printf("(%di+%d)(%di+%d)=%di+%d",a,b,c,d,num1,num2)
else
printf("(%di+%d)(%di+%d)=%di%d",a,b,c,d,num1,num2)
}
int main()
{
int a,b,c,d
printf("input number1:\n")
scanf("%di+%d",&a,&b)
printf("input number2:\n")
scanf("%di+%d",&c,&d)
xushu(a,b,c,d)
}
回答的也太快了吧!我刚输完就有这么多了!还好我这是纯c语言版。
输入数据是实属部分和虚数部分用逗号隔开。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
double real/*实数部分*/
double vir /*虚数部分*/
}COMPLEX
COMPLEX add(COMPLEX a,COMPLEX b)
COMPLEX substract(COMPLEX a,COMPLEX b)
COMPLEX multiple(COMPLEX a,COMPLEX b)
COMPLEX divide(COMPLEX a,COMPLEX b)
void printC(COMPLEX n)
{
if((n.vir - 0.00) <0)
printf("(%.4lf%.4lfi)",n.real,n.vir)
else
printf("(%.4lf+%.4lfi)",n.real,n.vir)
}
void main()
{
COMPLEX a,b
char c
printf("input real and virtual of complex number a:")
scanf("%lf,%lf",&a.real,&a.vir)
fflush(stdin)
printf("input real and virtual of complex number b:")
scanf("%lf,%lf",&b.real,&b.vir)
c = '+'
printC(a)printf(" %c ",c)printC(b)printf(" = ")
printC(add(a,b))
putchar('\n')
c = '-'
printC(a)printf(" %c ",c)printC(b)printf(" = ")
printC(substract(a,b))
putchar('\n')
c = '-'
printC(a)printf(" %c ",c)printC(b)printf(" = ")
printC(multiple(a,b))
putchar('\n')
c = '/'
printC(a)printf(" %c ",c)printC(b)printf(" = ")
printC(divide(a,b))
putchar('\n')
system("pause")
}
COMPLEX add(COMPLEX a,COMPLEX b)
{
COMPLEX c
c.real = a.real + b.real
c.vir = a.vir + b.vir
return c
}
COMPLEX substract(COMPLEX a,COMPLEX b)
{
COMPLEX c
c.real = a.real - b.real
c.vir = a.vir - b.vir
return c
}
COMPLEX multiple(COMPLEX a,COMPLEX b)
{
COMPLEX c
c.real = a.real * b.real - a.vir * b.vir
c.vir = a.vir * b.real + a.real * b.vir
return c
}
COMPLEX divide(COMPLEX a,COMPLEX b)
{
COMPLEX c
double den = b.real * b.real + b.vir * b.vir
c.real = (a.real * b.real + a.vir * b.vir) / den
c.vir = (a.vir * b.real - a.real * b.vir) / den
return c
}