C语言,请问怎么对一个数进行四舍五入并保留一位小数

请问怎么把这些数变成题目要求的样子……
【描述】
本题要求编写程序,计算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;
}