yangzhixiaohuli 发表于 2023-11-11 14:57:01

求助一下

7-1 复数运算
分数 5
作者 李军
单位 陕西理工大学
复数是由两个实数分别作为实部和虚部构成的一个复合数,从另一个角度来说复数就是由两个实数构成的有序对,在C语言中适合用结构类型来表示复数。现在要求用结构类型

typedef struct
{
    float x;
    float y;
} Comp;
及其变量来表示与存储复数,编写程序实现复数的加减法运算。

输入格式:
在一行输入四个用空格分开的实数a1 b1 a2 b2分别表示复数c1 = a1 + b1i和c2 = a2 + b2i

输出格式:
复数的输出应符合数学上关于复数的表示习惯:实部与虚部都为零时只输出一个0.00; 有一个为零时,只输出非零的部分; 虚部为负时,例如3-4i,应输出为3.00-4.00i的形式,不要输出为3.00+-4.00i。实部与虚部均保留2位小数,例如3.00-4.00i
输出在两行进行,第一行输出求和的结果,第二行输出求差的结果。

输入样例:
5.00 4.00 3.00 2.00
输出样例:
8.00+6.00i
2.00+2.00i

这题怎么写

isdkz 发表于 2023-11-11 14:57:08

#include <stdio.h>

typedef struct {
    float x;
    float y;
} Comp;

void add(Comp c1, Comp c2) {
    float real = c1.x + c2.x;
    float imag = c1.y + c2.y;
    if (imag >= 0) {
      printf("%.2f+%.2fi\n", real, imag);
    } else {
      printf("%.2f%.2fi\n", real, imag);
    }
}

void subtract(Comp c1, Comp c2) {
    float real = c1.x - c2.x;
    float imag = c1.y - c2.y;
    if (imag >= 0) {
      printf("%.2f+%.2fi\n", real, imag);
    } else {
      printf("%.2f%.2fi\n", real, imag);
    }
}

int main() {
    Comp c1, c2;
    scanf("%f%f%f%f", &c1.x, &c1.y, &c2.x, &c2.y);
    add(c1, c2);
    subtract(c1, c2);
    return 0;
}
页: [1]
查看完整版本: 求助一下