检查并修改c语言程序:下面的程序输入两个复数(实部、虚部),相乘后输出乘积。请在空白处填写适当内容完成该程序。 #include <stdio.h> 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 = COMPLEX Multiply(a,b) ; Output(&c); return 0; } void Input(COMPLEX *p) { scanf("%lg %lg", &COMPLEX.rp,&COMPLEX.ip ); } void Output(const COMPLEX *p) { printf("%g %g", COMPLEX.rp,COMPLEX.ip ); } COMPLEX Multiply(COMPLEX *p, COMPLEX *q) { COMPLEX r; r.rp = p.rp*q.rp+p.ip*q.ip ; r.ip = p.rp*q.ip-p.ip*q.rp ; return r; }
时间: 2024-03-25 14:42:09 浏览: 102
用C语言实现复数相加和相乘
下面是修改后的程序:
```
#include <stdio.h>
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);
Output(&c);
return 0;
}
void Input(COMPLEX *p) {
scanf("%lf %lf", &p->rp, &p->ip);
}
void Output(const COMPLEX *p) {
printf("%g %g", p->rp, p->ip);
}
COMPLEX Multiply(COMPLEX *p, COMPLEX *q) {
COMPLEX r;
r.rp = p->rp * q->rp - p->ip * q->ip;
r.ip = p->rp * q->ip + p->ip * q->rp;
return r;
}
```
修改说明:
1. 结构体 COMPLEX 的 rp 和 ip 成员应该通过指针访问,所以在 scanf 和 printf 函数中应该使用 `p->rp` 和 `p->ip` 而不是 `COMPLEX.rp` 和 `COMPLEX.ip`。
2. 在函数 Multiply 中,p 和 q 应该使用指针类型 COMPLEX *,而不是结构体类型 COMPLEX。
3. 在函数 Multiply 中,计算复数相乘的公式应该是:实部相乘减虚部相乘得到新的实部,实部与虚部相乘得到新的虚部。
阅读全文