若两个复数分别为:c1=x1+y1i和c2=x2+y2i,则它们的乘积为 c1×c2=(x1x2−y1y2)+(x1y2+x2y1)i。
本题要求实现一个函数计算两个复数之积。
函数接口定义:
double result_real, result_imag;
void complex_prod( double x1, double y1, double x2, double y2 );
其中用户传入的参数为两个复数x1
+y1
i和x2
+y2
i;函数complex_prod
应将计算结果的实部存放在全局变量result_real
中、虚部存放在全局变量result_imag
中。
裁判测试程序样例:
#include<stdio.h>
double result_real, result_imag;
void complex_prod( double x1, double y1, double x2, double y2 );
int main(void)
{
double imag1, imag2, real1, real2;
scanf("%lf %lf", &real1, &imag1);
scanf("%lf %lf", &real2, &imag2);
complex_prod(real1, imag1, real2, imag2);
printf("product of complex is (%f)+(%f)i\n", result_real, result_imag);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
1 2
-2 -3
结尾无空行
输出样例:
product of complex is (4.000000)+(-7.000000)i
结尾无空行
思路:构造函数,为题目给出的函数设计程序
1,首先看题目给出的函数框架:void complex_prod( double x1, double y1, double x2, double y2 ); 可知传入的参数分别是: x1,x2,y1,y2;
2,再看一下题目的要求:其中用户传入的参数为两个复数x1
+y1
i和x2
+y2
i;函数complex_prod
应将计算结果的实部存放在全局变量result_real
中、虚部存放在全局变量result_imag
中。
3,题目中已经给出计算结果用的公式,即: c1×c2=(x1x2−y1y2)+(x1y2+x2y1)i。可知实部为x1x2−y1y2,虚部为x1y2+x2y1;
4,然后就可以写代码了:因为题目中已经进行了定义了全局变量:double result_real, result_imag;在自定义的函数中可以直接引用;
完整代码:
void complex_prod( double x1, double y1, double x2, double y2 ){
result_real=x1*x2-y1*y2;
result_imag=x1*y2+x2*y1;
}