数据结构实验之实现两个复数的四则运算
来源:互联网 发布:2016淘宝冷门暴力类目 编辑:程序博客网 时间:2024/05/16 00:33
1.实验目的
了解并掌握用c语言来编写数据结构源程序的方法。
2.需求分析
首先建立一个复数,然后根据提示用户输入两个复数,使得能同时进行两个复数的加、减、乘、除运算。
输入形式和输入值的范围:分别输入两个复数,其格式为:a+bi用enter结束输入。
输出的形式:按程序规定输出其运算值,如:运算后只有实数时只输出实数虚数部分不表示,反之一样。
3.概要设计
(1)为了实现上述程序的功能,需要定义一个表示复数的抽象数据类型。
(2)本程序包含的函数:
l 主函数 main()
l 构造函数typedef struct {};
l 调用函数:fushu ceartfushu(float a,float b)
fushu add(fushu c1,fushu c2)
fushu sub(fushu c1,fushu c2)
fushu mul(fushu c1,fushu c2)
fushu div(fushu cv1,fushu c2)
void print_Z(fushu z)
各函数关系如下:
(3)主函数的伪码
main()
{
说明一个构造函数fushu;
定义两个实数和虚数分别为z1,z2;
定义符号变量ch;
提示输入实数和虚数z1,z2;
调用子函数;
提示输入+ - * /;
循环做下面处理直至输入“0”:
{
判断输入的符号做下面处理:
{
输入+时,调用加法子函数,打印输出 ;
输入-时,调用减法子函数,打印输出 ;
输入*时,调用乘法子函数,打印输出 ;
输入/时,调用除法子函数,打印输出 ;
提示输入+-*/;
}
}
}
4.详细设计
#include <stdio.h>
typedef structComplex //构造一个复数Complex
{
float real; //定义实数为 real
float imag; //定义虚数为 image
}fushu;
fushuceartfushu(float a,float b); //调用函数的宏定义
fushu add(fushuc1,fushu c2);
fushu sub(fushuc1,fushu c2);
fushu mul(fushuc1,fushu c2);
fushu div(fushucv1,fushu c2);
void print_Z(fushuz);
fushuceartfushu(float a,float b) //复数调用函数
{
fushu z; //定义一个复数z
z.real=a; //将a付给z的实部
z.imag=b; //将b付给z的虚部
return z;
}
fushu add(fushuc1,fushu c2) //加法调用函数
{
fushu sum;
sum.real=c1.real+c2.real; //实部加法运算
sum.imag=c1.imag+c2.imag; //虚部加法运算
return sum;
}
fushu sub(fushuc1,fushu c2) //减法调用函数
{
fushu cha;
cha.real=c1.real-c2.real; //实部减法运算
cha.imag=c1.imag-c2.imag; //虚部减法运算
return cha;
}
fushu mul(fushuc1,fushu c2) //乘法调用函数
{
fushu ji;
ji.real=c1.real*c2.real-c1.imag*c2.imag; //实部乘法运算
ji.imag=c1.imag*c2.real+c1.real*c2.imag; //虚部乘法运算
return ji;
}
fushu div(fushuc1,fushu c2) //除法调用函数
{
fushu shang;
shang.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); //实部除法运算
shang.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); //虚部除法运算
return shang;
}
void print_Z(fushuz) //输出调用函数
{
if (z.imag==0) //判断运算后虚数部分是否为0
printf("结果为:%0.2f\n",z.real); //是,就输出实部
else
if(z.real==0) //判断运算后实数部分是否为0
printf("结果为:%0.2fi\n",z.imag); //是,就输出虚部
else
printf("结果为:%0.2f+%0.2fi\n",z.real,z.imag);//否则输出实数和虚部
}
void main()
{
fushu v1,v2,sum,cha,ji,shang;
float z1,z2; //定义实部和虚部
char ch; //定义符号
printf("please inpur first fushunumber:"); //提示输入第一个复数
scanf("%f+%fi",&z1,&z2); //输入语句
v1=ceartfushu(z1,z2); //赋值语句
printf("the other one:"); //提示输入
scanf("%f+%fi",&z1,&z2);
v2=ceartfushu(z1,z2);
printf("please choice operation: +,-, * or /:");//提示输入运算符号
getchar(); //收集运算符
ch=getchar(); //将收集到的符号赋给ch
while(ch!='0') //循环语句
{
switch(ch) //判断语句
{
case'+':sum=add(v1,v2);print_Z(sum);break; /*调用子函数运算语句*/
case'-':cha=sub(v1,v2);print_Z(cha);break;
case'*': ji=mul(v1,v2);print_Z(ji);break;
case'/':shang=div(v1,v2);print_Z(shang);break;
default: printf("enterdata error!\n"); printf("\n");
printf("please choiceoperation: +, -, * or /:"); //提示输入运算符
}
ch=getchar();
}
}
- 数据结构实验之实现两个复数的四则运算
- 数据结构之 复数的四则运算
- 数据结构之复数的四则运算
- 给出复数,实现复数的四则运算
- <数据结构>复数四则运算
- 使用模板类实现复数的四则运算
- 复数的四则运算
- 复数的四则运算
- 复数类的四则运算
- 复数的四则运算
- 数据结构之简单四则运算表达式求值8-(栈的实现)
- 复数四则运算--类模板实现
- 复数四则运算-c++代码实现
- 使用运算符重载实现复数的四则运算
- 大学Java实验一,素数,哥德巴赫猜想,简单的日期类,复数类四则运算
- [C++]数据结构实验04:使用堆栈进行简单的四则运算
- Java实现两个复数的加法运算
- 数据结构栈实现四则运算
- nyoj-47-过河问题&&poj-1700-Crossing River
- c语言用简单数组实现循环队列
- struts2中的s:interator使用
- iOS学习系列 - 扩展机制category与associative
- 黑马程序员—Java的位移运算另一种方法
- 数据结构实验之实现两个复数的四则运算
- UILabel 自动高度计算
- signtool对EXE进行签名
- Objective-C基础教程读书笔记(6)
- JDBC数据库操作
- MIC编程优化(1)——并行度优化
- 在TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题.
- GetLastError 使用介绍
- Oracle 数据库服务器,数据库,实例,用户之间的关系