c语言复数的运算实验报告,C语言复数的运算(实验报告).doc

实验报告

题目:复数的四则运算

班级: 13信管 姓名:白浩然 学号:201340403034 完成日期:2014.05.21

一、需求分析

1.本演示程序中复数由两个相互之间存在次序关系的实数构成。

2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。

3.程序执行的命令包括:

1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数求积;5)从已知复数中分离出实部;6)从已知复数中分离出虚部。

4.测试数据:

1)构造复数:

2) 复数求和:

3) 复数求差:

4) 复数求积:

5) 提取实部:

6) 提取虚部:

2、 编码实现

#include "stdio.h"

#include "stdlib.h"

struct complex{

float real;//实部

float imag;//虚部

};

//构造复数

void InitComplex(complex &c,float r1,float r2)

{

c.real=r1;//r1为实部

c.imag=r2;//r2为虚部

}

//复数求和

void AddComplex(complex &c,complex c1,complex c2)

{

c.real=c1.real+c2.real;//实部相加

c.imag=c1.imag+c2.imag;//虚部相加

}

//复数求差

void SubComplex(complex &c,complex c1,complex c2)

{

c.real=c1.real-c2.real;//实部相减

c.imag=c1.imag-c2.imag;//虚部相减

}

//复数求积

void MulComplex(complex &c,complex c1,complex c2)

{

c.real=(c1.real*c2.real)-(c1.imag*c2.imag);

c.imag=(c1.real*c2.imag)+(c2.real*c1.imag);

}

//分离实部

void RealComplex(complex c,float &r)

{

r=c.real;

}

//分离虚部

void ImagComplex(complex c,float &r)

{

r=c.imag;

}

//主程序

void main()

{

complex c,c1,c2;

float r,r1,r2,r11,r22,r12,r21;

int node;

printf("请输入要操作的序号:\n");

printf("1.构造一个复数 2.两个复数求和 3.两个复数求差\n");

printf("4.两个复数求积 5.分离出实部 6.分离出虚部\n");

scanf("%d",&node);

while(node!=0)

{

switch(node){

case 1:printf("输入复数的实部和虚部:\n");

scanf("%f %f",&r1,&r2);

InitComplex(c,r1,r2);

printf("构造的复数为:%f+%fi\n",c.real,c.imag);

break;

case 2:printf("输入c1的实部和虚部:\n");

scanf("%f %f",&r11,&r12);

InitComplex(c1,r11,r12);

printf("输入c2的实部和虚部:\n");

scanf("%f %f",&r21,&r22);

InitComplex(c2,r21,r22);

AddComplex(c,c1,c2);

printf("结果为:%f+%fi\n",c.real,c.imag);

break;

case 3:printf("输入c1的实部和虚部:\n");

scanf("%f %f",&r11,&r12);

InitComplex(c1,r11,r12);

printf("输入c2的实部和虚部:\n");

scanf("%f %f",&r21,&r22);

InitComplex(c2,r21,r22);

SubComplex(c,c1,c2);

printf("结果为:%f+%fi\n",c.real,c.imag);

break;

case 4:printf("输入c1的实部和虚部:\n");

scanf("%f %f",&r11,&r12);

InitComplex(c1,r11,r12);

printf("输入c2的实部和虚部:\n");

scanf("%f %f",&r21,&r22);

InitComplex(c2,r21,r22);

MulComplex(c,c1,c2);

printf("结果为:%f+%fi\n",c.real,c.imag);

break;

case 5:printf("输入复数的实部和虚部:\n");

scanf("%f %f",&r1,&r2);

InitComplex(c,r1,r2);

RealComplex(c,r);

printf("实部为:%f\n",r);

break;

case 6:printf("输入复数的实部和虚部:\n");

scanf("%f %f",&r1,&r2);

InitComplex(c,r1,r2);

ImagComplex(c,r);

printf("虚部为:%f\n",r);

break;

default:printf("结束");

}

scanf("%d",node);

}

}

3、 调试分析

1. 开始时文件后缀写成了“.c”,导致调试多次无法运行,后来改为“.cpp”;

2. 多处“%f”写成了“%d”,导致程序不能正常运行;

3. 定义结构体时,最后一个“}”后忘记加“;”,导致程序出现错误,以后应多加注意。

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值