#include <iostream> using namespace std; struct complex //复数的结构类型 { int real; int imgn; }; //函数sub和mul的原型 /********* Begin *********/ int sun(int c1,int c2); int mul(int c1,int c2); /********* End *********/ int main() { /********* Begin *********/ complex x,y,c3,c4; cin>>x.real>>x.imgn; cin>>y.real>>y.imgn; c3=sun(x,y); c4=mul(x,y); cout<<c3.real<<' '<<c3.imgn<<endl; cout<<c4.real<<' '<<c4.imgn<<endl; /********* End *********/ return 0; } //函数sub和mul的定义 /********* Begin *********/ complex sun(complex c1,complex c2){ complex c3; c3.real=c1.real-c2.real; c3.imgn=c1.imgn-c2.imgn; return c3; } complex mul(complex c1,complex c2){ complex c3; c3.real=c1.real*c2.real-c1.imgn*c2.imgn; c3.imgn=c1.imgn*c2.real+c1.real*c2.imgn; return c3; }
时间: 2023-07-06 14:38:43 浏览: 76
这段代码中存在两个问题:
1. 函数原型和函数定义的类型不匹配。在函数原型中,sub 和 mul 的参数类型是 int,而在函数定义中,参数类型应该是 complex。
修改方法:将函数原型中的参数类型修改为 complex。
2. 函数 mul 的实现有错误。复数的乘法应该是 (a + bi) * (c + di) = (ac - bd) + (ad + bc)i,而函数 mul 的实现中,ad 和 bc 的部分写反了。
修改方法:将 c3.imgn=c1.imgn*c2.real+c1.real*c2.imgn; 修改为 c3.imgn=c1.real*c2.imgn+c1.imgn*c2.real;。
修改后的代码如下所示:
```
#include <iostream>
using namespace std;
struct complex { // 复数的结构类型
int real;
int imgn;
};
// 函数 sub 和 mul 的原型
complex sub(complex c1, complex c2);
complex mul(complex c1, complex c2);
int main() {
complex x, y, c3, c4;
cin >> x.real >> x.imgn;
cin >> y.real >> y.imgn;
c3 = sub(x, y);
c4 = mul(x, y);
cout << c3.real << ' ' << c3.imgn << endl;
cout << c4.real << ' ' << c4.imgn << endl;
return 0;
}
// 函数 sub 和 mul 的定义
complex sub(complex c1, complex c2) {
complex c3;
c3.real = c1.real - c2.real;
c3.imgn = c1.imgn - c2.imgn;
return c3;
}
complex mul(complex c1, complex c2) {
complex c3;
c3.real = c1.real * c2.real - c1.imgn * c2.imgn;
c3.imgn = c1.real * c2.imgn + c1.imgn * c2.real;
return c3;
}
```
阅读全文