请问怎么把这些数变成题目要求的样子……
【描述】
本题要求编写程序,计算2个复数的和、差、积、商。
【输入】
输入在一行中按照"a1 b1 a2 b2"的格式给出2个复数c1=a1+b1i和c2=a2+b2i的实部和虚部。题目保证c2不为0。
【输出】
分别在4行中按照“(a1+b1i) 运算符 (a2+b2i) = 结果”的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。
【输入示例】
2 3.08 -2.04 5.06
【输出示例】
(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
该回答引用ChatGPT
#include<stdio.h>
#include<math.h>
typedef struct {
double real, imag;
}Complex;
Complex add(Complex c1, Complex c2) {
Complex result;
result.real = c1.real + c2.real;
result.imag = c1.imag + c2.imag;
return result;
}
Complex subtract(Complex c1, Complex c2) {
Complex result;
result.real = c1.real - c2.real;
result.imag = c1.imag - c2.imag;
return result;
}
Complex multiply(Complex c1, Complex c2) {
Complex result;
result.real = c1.real * c2.real - c1.imag * c2.imag;
result.imag = c1.real * c2.imag + c1.imag * c2.real;
return result;
}
Complex divide(Complex c1, Complex c2) {
Complex result;
result.real = (c1.real * c2.real + c1.imag * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag);
result.imag = (c1.imag * c2.real - c1.real * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag);
return result;
}
void printComplex(Complex c, char operator) {
if (c.real == 0) {
if (c.imag == 0) {
printf("0.0\n");
}
else if (c.imag > 0) {
printf("%.1fi\n", c.imag);
}
else {
printf("-%.1fi\n", fabs(c.imag));
}
}
else if (c.imag == 0) {
printf("%.1f\n", c.real);
}
else if (c.imag > 0) {
printf("(%.1f+%.1fi)\n", c.real, c.imag);
}
else {
printf("(%.1f-%.1fi)\n", c.real, fabs(c.imag));
}
}
int main() {
Complex c1, c2, result;
scanf("%lf%lf%lf%lf", &c1.real, &c1.imag, &c2.real, &c2.imag);
result = add(c1, c2);
printComplex(c1, '+');
printComplex(c2, '=');
printComplex(result, '\0');
result = subtract(c1, c2);
printComplex(c1, '-');
printComplex(c2, '=');
printComplex(result, '\0');
result = multiply(c1, c2);
printComplex(c1, '*');
printComplex(c2, '=');
printComplex(result
方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a1, b1, a2, b2;
cin >> a1 >> b1 >> a2 >> b2;
double real_sum = a1 + a2;
double imag_sum = b1 + b2;
if (real_sum == 0) printf("%.1lfi\n", imag_sum);
else if (imag_sum == 0) printf("%.1lf\n", real_sum);
else printf("(%.1lf+%.1lfi) + (%.1lf+%.1lfi) = %.1lf+%.1lfi\n", a1, b1, a2, b2, real_sum, imag_sum);
double real_diff = a1 - a2;
double imag_diff = b1 - b2;
if (real_diff == 0) printf("%.1lfi\n", imag_diff);
else if (imag_diff == 0) printf("%.1lf\n", real_diff);
else printf("(%.1lf+%.1lfi) - (%.1lf+%.1lfi) = %.1lf+%.1lfi\n", a1, b1, a2, b2, real_diff, imag_diff);
double real_prod = a1 * a2 - b1 * b2;
double imag_prod = a1 * b2 + a2 * b1;
if (real_prod == 0) printf("%.1lfi\n", imag_prod);
else if (imag_prod == 0) printf("%.1lf\n", real_prod);
else printf("(%.1lf+%.1lfi) * (%.1lf+%.1lfi) = %.1lf+%.1lfi\n", a1, b1, a2, b2, real_prod, imag_prod);
double real_quo = (a1 * a2 + b1 * b2) / (a2 * a2 + b2 * b2);
double imag_quo = (b1 * a2 - a1 * b2) / (a2 * a2 + b2 * b2);
if (real_quo == 0) printf("%.1lfi\n", imag_quo);
else if (imag_quo == 0) printf("%.1lf\n", real_quo);
else printf("(%.1lf+%.1lfi) / (%.1lf+%.1lfi) = %.1lf+%.1lfi\n", a1, b1, a2, b2, real_quo, imag_quo);
return 0;
}