#include"stdio.h"
#include"stdlib.h"
struct Complex{
float real;
float imag;
};
void input_c1(complex &c1,float r1,float i1)
{
c.real=r1;
c.imag=i1;
}
void input_c1(complex &c2,float r2,float i2)
{
c.real=r2;
c.imag=i2;
}
void output_c1(complex &c1)
{
printf("%f+%fi",c1.real,c1.imag);
}
void output_c2(complex &c2)
{
printf("%f+%fi",c2.real,c2.imag);
}
void output_Add(complex &c,complex c1,complex c2) //加
{ c1.real=real+c2.real;
c1.imag=imag+c2.imag;
printf("%f+%fi",c.real,c.imag);
}
void out_reduce(complex &c,complex c1,complex c2) //减
{
c1.real=real-c2.real;
c1.imag=imag-c2.imag;
printf("%f-%fi",c.real,c.imag);
}
void output_product(complex &c,complex c1,complex c2) //乘
{
c1.real=real*c2.real-imag*c2.imag;
c1.imag=imag*c2.real+real*c2.imag;
printf("%f*%fi",c.real,c.imag);
}
void main()
{
int num;
int i1,i2,r1,r2;
printf("********************************\n");
printf("*1.输入复数c1 \n");
printf("*2.输入复数c2 *\n");
printf("*3.输入出复数c1 *\n");
printf("*4.输入出复数c2 *\n");
printf("*5.求c1和c2的和 *\n");
printf("*6.求c1和c2的差 *\n");
printf("*7.求c1和c2的积 *\n");
printf("*0.结束 *\n");
printf("*******************************\n");
printf("\n");
printf("input num in the neum=");
scnaf("%d",&num);
do{
switch(num)
{
case 0:printf("Esit!\n");break;
case 1:printf("请输入第一个复数的实部和虚部:\n");
scanf("%f%f",&r1,&i1);
input_c1(c1,r1,i1);
break;
case 2:printf("请输入第一个复数的实部和虚部:\n");
scanf("%f%f",&r2,&i2);
input_c1(c2,r2,i2);
break;
case 3:output_c1(c);break;
case 4:output_c2(c);break;
case 5:output_Add(c,r1,i1);break;
case 6:output_reduce(c,r1,i1);break;
case 7:output_product(c,r1,i1);break;
}
}while(num<=7);
}
1、main函数第一个scanf写错了,
2、结构体从c1、c2没有定义
3、输出格式printf("%f+%fi",)后面的%fi可能会有问题,没试过,不敢肯定
4、注意输出函数里的参数,要输出哪个参数就填对应的数
错误比较多,帮你修改了下,满意请采纳,有问题请追问。
#include"stdio.h"
#include"stdlib.h"
struct complex{
double real;
double imag;
};
void input_c(complex &c,double r1,double i1)
{
c.real=r1;
c.imag=i1;
}
void output_c(complex &c1)
{
printf("%f+%fi",c1.real,c1.imag);
}
void output_Add(complex &c,complex c1,complex c2) //加
{
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
printf("%f+%fi",c.real,c.imag);
}
void out_reduce(complex &c,complex c1,complex c2) //减
{
c.real=c1.real-c2.real;
c.imag=c1.imag-c2.imag;
printf("%f+%fi",c.real,c.imag);
}
void output_product(complex &c,complex c1,complex c2) //乘
{
c.real=c1.real*c2.real-c1.imag*c2.imag;
c.imag=c1.imag*c2.real+c1.real*c2.imag;
printf("%f+%fi",c.real,c.imag);
}
int main()
{
int num;
double i1,i2,r1,r2;
complex c1, c2, c;
do{
printf("********************************\n");
printf("*1.输入复数c1 *\n");
printf("*2.输入复数c2 *\n");
printf("*3.输入出复数c1 *\n");
printf("*4.输入出复数c2 *\n");
printf("*5.求c1和c2的和 *\n");
printf("*6.求c1和c2的差 *\n");
printf("*7.求c1和c2的积 *\n");
printf("*0.结束 *\n");
printf("*******************************\n");
printf("\n");
printf("please select one from the menu:");
scanf("%d",&num);
switch(num)
{
case 0:printf("it is going to exit!\n");break;
case 1:printf("请输入第一个复数的实部和虚部:\n");
scanf("%lf%lf",&r1,&i1);
input_c(c1,r1,i1);
break;
case 2:printf("请输入第二个复数的实部和虚部:\n");
scanf("%lf%lf",&r2,&i2);
input_c(c2,r2,i2);
break;
case 3:output_c(c1);break;
case 4:output_c(c2);break;
case 5:output_Add(c,c1,c2);break;
case 6:out_reduce(c,c1,c2);break;
case 7:output_product(c,c1,c2);break;
}
}while(num<=7 && num != 0);
}