数据结构:复数的构建

 C语言数据结构复数的构建及运行

#include <stdio.h>

typedef struct
{
    float Realpart;//实部
    float Imagepart;//虚部
}Complex;
 
void Create(Complex &C,float x,float y)//为什么取地址呢?因为这个函数要改变主函数的实参,不然的话赋值语句只在本函数里有用了。实参不变化这个函数就相当于不存在。可以用printf语句试一下,如果没有取地址,复数就没有被构建
{//构造一个x+yi的复数
    C.Realpart=x;
    C.Imagepart=y;
}


float GetReal(Complex C)
{
    //取得实部的值
    return C.Realpart;
}

float GetImag(Complex C)
{//取得虚部的值 
	return C.Imagepart;
 } 

Complex Add(Complex C1,Complex C2)
{
    //求两个复数C1和C2的和sum 
    Complex sum;
    sum.Realpart=C1.Realpart+C2.Realpart;
    sum.Imagepart=C1.Imagepart+C2.Imagepart;
    return sum;
}

Complex Sub(Complex C1,Complex C2)
{//求两个复数C1和C2的差difference 
	Complex difference;
	difference.Realpart=C1.Realpart-C2.Realpart;
	difference.Imagepart=C1.Imagepart-C2.Imagepart;
	return difference;
}

main()
{
	//创建复数C,D,并输出其实部、虚部 
	Complex C;
	float a=2,b=3;
	Create(C,a,b);
	Complex D;
	float c=5,d=6;
	Create(D,c,d);
	printf("%lf %lf\n",C.Realpart,C.Imagepart);
	printf("%lf %lf\n",D.Realpart,D.Imagepart);
	//分别输出复数C的实虚部
	printf("%lf\n",GetReal(C));
	printf("%lf\n",GetImag(C)); 
	//输出两个复数C、D的和
	Complex E=Add(C,D);
	printf("%lf %lf\n",E.Realpart,E.Imagepart);
	//输出两个复数C、D的差
	E=Sub(C,D);
	printf("%lf %lf\n",E.Realpart,E.Imagepart);
}

杂记:

1、在写函数Create的时候,书上说是&Complex C,但是编译一直出错[Error] variable or field 'Create' declared void。后来发现书上错了,把&Complex C改成Complex &C就行了。后来想想也对,&取地址,怎么会在类型前面呢?肯定是在变量前面啊。(看来对什么都要有怀疑精神,不能一直听信书上的)。

 

慢慢学着,对C语言的恐惧感也慢慢减弱了。之前一直自闭,恐怕就是C语言还没入门,一些基本操作没掌握吧,还有就是可恶的编译器,出些乱七八糟的错误。加油吧,学之,难者亦易已!

  • 11
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值