夏秋的朝暮. 2023-02-12 17:01 采纳率: 90%
浏览 38
已结题

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

  • 写回答

2条回答 默认 最新

  • CodeBytes 2023-02-12 17:25
    关注

    该回答引用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
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月12日
  • 已采纳回答 2月12日
  • 创建了问题 2月12日

悬赏问题

  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程