1.复数乘法
输入两个表示复数的字符串,输出它们相乘的结果的字符串
复数字符串用
a+bi
表示
(a, b
为整数
, i
为虚数单位,
i^2= -1)
两个表示复数的字符串 两个数相乘的结果的字符串
1+2i
2+1
0+5i
(1+2i)(2+i) = (2 + i + 4i + 2i * i) = 0 + 5i
1+-2i
3+4i
11+-2i
(1+-2i)(3+4i) = (3 + 4i - 6i - 8i * i) = 11+-2i
2.解析
/*
复数乘法: (a + bi)*(c + di) = ac + bd*i^2 + cbi + adi
其中i^2 = -1
*/
#include <string>
#include <iostream>
using namespace std;
//字符串转整形
int stringtoInt(string s){
int num = 0;
int flag = 1;
for (int i = 0; i < s.size(); i++){
//如果有负号,说明是负数
if (s[i] == '-')
flag = -1;
//只利用数字字符,i不使用
else if (s[i] >= '0' && s[i] <= '9')
num = num * 10 + (s[i] - '0');
}
return num * flag;
}
int main(){
string s1, s2;
while (cin >> s1 >> s2){
//截取整数部分
string s1First = s1.substr(0, s1.find('+'));
string s2First = s2.substr(0, s2.find('+'));
//截取复数部分
//复数1
string s1Second = s1.substr(s1.find('+') + 1);
//复数2
string s2Second = s2.substr(s2.find('+') + 1);
//把字符串转换成整数
int s1F = stringtoInt(s1First);
int s2F = stringtoInt(s2First);
int s1S = stringtoInt(s1Second);
int s2S = stringtoInt(s2Second);
//整数部分
int F = s1F*s2F - s1S*s2S;
//复数
int S = s1F*s2S + s1S*s2F;
cout << F << "+" << S << "i" << endl;
}
return 0;
}
/*java*/
public class Main
{
public static int stringtoInt(String s){
int num = 0;
int flag = 1;
for (int i = 0; i < s.length(); i++){
//如果有负号,说明是负数
if (s.charAt(i) == '-')
flag = -1;
//只利用数字字符,i不使用
else if (s.charAt(i) >= '0' && s.charAt(i) <= '9')
num = num * 10 + (s.charAt(i) - '0')
}
return num * flag;
}
public static void main(String[] args) {
String s1, s2;
Scanner scanner = new Scanner(System.in);
s1 = scanner.nextLine();
s2 = scanner.nextLine();
//截取整数部分
String s1First = s1.substring(0, s1.indexOf('+'));
String s2First = s2.substring(0, s2.indexOf('+'));
//截取复数部分
//复数1
String s1Second = s1.substring(s1.indexOf('+') + 1);
//复数2
String s2Second = s2.substring(s2.indexOf('+') + 1);
//把字符串转换成整数
int s1F = stringtoInt(s1First);
int s2F = stringtoInt(s2First);
int s1S = stringtoInt(s1Second);
int s2S = stringtoInt(s2Second);
//整数部分
int F = s1F*s2F - s1S*s2S;
//复数
int S = s1F*s2S + s1S*s2F;
System.out.println(F + "+" + S + "i");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现