【发布时间】:2020-09-19 18:50:14
【问题描述】:
我正在尝试编写一个程序,将两个不同的复数 (b*c) 相乘,将结果存储在 a 中并打印出结果。为了简单起见,我只决定使用 10 个数字,并将 b 和 c 的所有虚数和实数设置为数字 0 到 9。
首先,我创建包含复数 a、b 和 c 的实部和虚部的数组。接下来我声明 a 的实部和虚部为零,因为我还不知道这些。为了找到这些,我有一个名为 multiply 的函数,它计算 a 的实部和虚部。
最后,在我的主要方法中,我循环遍历所有数组,生成值 0-9,使用乘法填充包含 a 的实部和虚部值的 a(as_re 和 as_im)的数组,然后简单地打印所有这些条目。
但是我每次迭代只得到:The product is 0 + 0i。这意味着我的乘法函数不会更新a_re 和a_im 的值。谁能帮我理解为什么?
我的代码如下:
#include <stdio.h>
#include <stdlib.h>
void multiply(int c_re, int c_im, int a_re, int a_im, int b_re, int b_im);
int as_re[10];
int as_im[10];
int bs_re[10];
int bs_im[10];
int cs_re[10];
int cs_im[10];
int a_re = 0;
int a_im = 0;
int main(){
for (int i = 0; i < 10; i++){
bs_re[i] = i;
bs_im[i] = i;
cs_re[i] = i;
cs_re[i] = i;
multiply(cs_re[i], cs_im[i], as_re[i], as_im[i], bs_re[i], bs_im[i]);
as_re[i] = a_re;
as_im[i] = a_im;
printf("The product is %d + %di\n", as_re[i], as_im[i]);
}
}
void multiply(int c_re, int c_im, int a_re, int a_im, int b_re, int b_im){
a_re = c_re * b_re - c_im * b_im;
a_im = c_re * b_im + c_im * b_re;
}
【问题讨论】:
标签: c