程序填空题:复数乘法*
复数乘法\*
下面的程序输入两个复数(实部、虚部),相乘后输出乘积。请在空白处填写适当内容完成该程序。
```c
#include
typedef struct
{
double rp, ip;
} COMPLEX;
void Input(COMPLEX *p);
void Output(const COMPLEX *p);
COMPLEX Multiply(COMPLEX *p, COMPLEX *q);
int main()
{
COMPLEX a, b, c;
Input(&a);
Input(&b);
c = @@[Multiply(&a, &b)](2);
Output(&c);
return 0;
}
void Input(COMPLEX *p)
{
scanf("%lg %lg", @@[&p->rp, &p->ip](2));
}
void Output(const COMPLEX *p)
{
printf("%g %g", @@[p->rp, p->ip](2));
}
COMPLEX Multiply(COMPLEX *p, COMPLEX *q)
{
COMPLEX r;
r.rp = @@[p->rp * q->rp - p->ip * q->ip](2);
r.ip = @@[p->rp * q->ip + p->ip * q->rp](2);
return r;
}
```
答案:
第1空:Multiply(&a, &b)
第2空:&p->rp, &p->ip
第3空:p->rp, p->ip
第4空:p->rp * q->rp - p->ip * q->ip
第5空:p->rp * q->ip + p->ip * q->rp
下面的程序输入两个复数(实部、虚部),相乘后输出乘积。请在空白处填写适当内容完成该程序。
```c
#include
typedef struct
{
double rp, ip;
} COMPLEX;
void Input(COMPLEX *p);
void Output(const COMPLEX *p);
COMPLEX Multiply(COMPLEX *p, COMPLEX *q);
int main()
{
COMPLEX a, b, c;
Input(&a);
Input(&b);
c = @@[Multiply(&a, &b)](2);
Output(&c);
return 0;
}
void Input(COMPLEX *p)
{
scanf("%lg %lg", @@[&p->rp, &p->ip](2));
}
void Output(const COMPLEX *p)
{
printf("%g %g", @@[p->rp, p->ip](2));
}
COMPLEX Multiply(COMPLEX *p, COMPLEX *q)
{
COMPLEX r;
r.rp = @@[p->rp * q->rp - p->ip * q->ip](2);
r.ip = @@[p->rp * q->ip + p->ip * q->rp](2);
return r;
}
```
答案:
第1空:Multiply(&a, &b)
第2空:&p->rp, &p->ip
第3空:p->rp, p->ip
第4空:p->rp * q->rp - p->ip * q->ip
第5空:p->rp * q->ip + p->ip * q->rp