定义表示复数的结构体类型,成员为实部和虚部,float。定义函数计算两个复数的和,返回复数。定义函数显示复数格式为:1+1j ,1-1j,如果是0,显示0+0j。
输入:两行,每行表示一个复数的实部和虚部。
输出:一行,两个复数的和。
【输入输出样例】
输入:
-1 -2
-3 -4
输出:
-4-6j
提示:主函数从如下:
int main()
{
COMPLEX a,b,c;
scanf("%f%f",&a.real,&a.imag);
scanf("%f%f",&b.real,&b.imag);
c=add(a,b);
show(c);
return 0;
}
输出格式%g.
COMPLEX用了结构体,show怎么弄,最后怎么输出c啊,必须用要求的主函数
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
typedef struct
{
float real;
float imag;
}COMPLEX;
COMPLEX add(COMPLEX a,COMPLEX b)
{
COMPLEX c;
c.real = a.real + b.real;
c.imag = a.imag + b.imag;
return c;
}
void show(COMPLEX c)
{
if(c.imag>=0)
printf("%g+%gi\n",c.real,c.imag);
else
printf("%g%gi\n",c.real,c.imag);
}
int main()
{
COMPLEX a,b,c;
scanf("%f%f",&a.real,&a.imag);
scanf("%f%f",&b.real,&b.imag);
c=add(a,b);
show(c);
return 0;
}
你可以参考一下,希望采纳
#include <stdio.h>
struct COMPLEX
{
float real;
float imag;
};
struct COMPLEX add(struct COMPLEX a1, struct COMPLEX a2)
{
struct COMPLEX result;
result.real = a1.real + a2.real;
result.imag = a1.imag + a2.imag;
return result;
}
void show(struct COMPLEX c) {
if (c.real == 0 && c.imag == 0) { //实部、虚部都为0
printf("0+0j\n");
}
else if (c.real == 0 && c.imag != 0) { //实部为0
if (c.imag > 0) { //虚部大于0
printf("0+%gj\n", c.imag);
}
else { //虚部小于0
printf("0%gj\n", c.imag);
}
}
else if (c.real != 0 && c.imag == 0) { //虚部为0
printf("%g+0j\n", c.real);
}
else if (c.real > 0 && c.imag > 0) { //实部、虚部都大于0
printf("%g+%gj\n", c.real,c.imag);
}
else if (c.real > 0 && c.imag < 0) { //实部大于0、虚部小于0
printf("%g%gj\n", c.real, c.imag);
}
else if (c.real < 0 && c.imag > 0) { //实部小于0、虚部大于0
printf("%g+%gj\n", c.real, c.imag);
}
else { //实部、虚部都小于0
printf("%g%gj\n", c.real, c.imag);
}
}
int main()
{
COMPLEX a, b, c;
scanf_s("%f%f", &a.real, &a.imag);
scanf_s("%f%f", &b.real, &b.imag);
c = add(a, b);
show(c);
return 0;
}