莱鸟求助:c语言写的复数四则运算!!——输入第二个时就不行了,为什么啊~~
#include <stdio.h>
#include <stdlib.h>
typedef struct Complex
{
float real;
float image;
}Complex;
void CreatComplex(Complex *c,float a,float b);
void AddComplex(Complex *sum,Complex *c1,Complex *c2 );
void SubComplex(Complex *Sub,Complex *c1,Complex *c2 );
void MulComplex(Complex *Mul,Complex *c1,Complex *c2 );
void PrintComplex(Complex *c);
void CreatComplex(Complex *c,float a,float b)
{
c->real = a;
c->image = b;
}
void AddComplex(Complex *sum,Complex *c1,Complex *c2)
{
sum->real = c1->real + c2->real ;
sum->image = c1->image + c2->image ;
}
void SubComplex(Complex *Sub,Complex *c1,Complex *c2 )
{
Sub->real = c1->real -c2->real ;
Sub->image = c1->image - c2->image ;
}
void MulComplex(Complex *Mul,Complex *c1,Complex *c2 )
{
Mul->real = c1->real * c2->real - c1->image * c2->image ;
Mul->image = c1->real * c2->image + c1->image * c2->real ;
}
void PrintComplex(Complex *c)
{
if (c->image == 0.0)
printf("%5.2f\n",c->real );
else
{
if(c->real==0.0)
printf("%5.2fi\n",c->image);
else
printf("%5.2f+%5.2fi\n",c->real ,c->image );
}
}
void Printreal(Complex *c)
{
printf("该复数的实部是:%5.2f\n",c->real);
}
void Printimage(Complex *c)
{
printf("该复数的虚部是:%5.2f\n",c->image);
}
void main()
{
float a,b,c,d;
Complex *c1,*c2,*Sum,*Sub,*Mul;
printf("请输入第一个复数的实部和虚部,中间以空格隔开:");
scanf("%f %f",&a,&b);
getchar();
printf("请输入第二个复数的实部和虚部,中间以空格隔开:");
scanf("%f %f",&c,&d);
CreatComplex(c1,a,b);
PrintComplex(c1);
Printreal(c1);
Printimage(c1);
CreatComplex(c2,c,d);
PrintComplex(c2);
Printreal(c2);
Printimage(c2);
AddComplex(Sum,c1,c2);
PrintComplex(Sum);
SubComplex(Sub,c1,c2);
PrintComplex(Sub);
MulComplex(Mul,c1,c2);
PrintComplex(Mul);
}
[解决办法]
呵呵,这是逻辑错误啊,你再捋一遍吧,不行就跟着一步一步的调试一下!
[解决办法]
你的输入有问题,输入提示说用空格隔开。scanf("%f %f",&a,&b);这句当中也是用空格隔开
但是你输入的时候却是用,隔开当然会错误了。
你改成scanf("%f%f",&a,&b);去掉当中的空格就可以任意格式了
[解决办法]
Complex *c1,*c2,*Sum,*Sub,*Mul;
//这些都是指针类型哦,没有给谈们分配内存的,所以错了
scanf()//为格式化函数,怎么的格式都要对应起来,
float a,b,c,d;
Complex *c1,*c2,*Sum,*Sub,*Mul;
//指针要先申请空间啊
c1=(Complex*)malloc(sizeof(Complex));
c2=(Complex*)malloc(sizeof(Complex));
Sum=(Complex*)malloc(sizeof(Complex));
Sub=(Complex*)malloc(sizeof(Complex));
Mul=(Complex*)malloc(sizeof(Complex));