读书人

莱鸟c语言写的复数四则运算!输入

发布时间: 2013-11-11 14:02:17 作者: rapoo

莱鸟求助: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);
}
莱鸟c语言写的复数四则运算!——输入第二个时就不行了,为什么啊
[解决办法]
呵呵,这是逻辑错误啊,你再捋一遍吧,不行就跟着一步一步的调试一下!
[解决办法]
你的输入有问题,输入提示说用空格隔开。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));

读书人网 >C语言

热点推荐