首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

莱鸟c语言写的复数四则运算!——输入第二个时就不行了,为什么啊

2013-11-11 
莱鸟求助:c语言写的复数四则运算!!——输入第二个时就不行了,为什么啊~~#include stdio.h#include stdlib

莱鸟求助: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));

热点排行