首页 > 软件 > 用C语言写出复数的抽象数据类型,至少完成创建一个复数,复数加减,虚部等五,求一个复数的实部个操作

用C语言写出复数的抽象数据类型,至少完成创建一个复数,复数加减,虚部等五,求一个复数的实部个操作

软件 2026-11-12

试用C语言的结构类型定义表示复数的抽象数据类型。

定义: class complex { private: double real; //复数的实部 double imag; //复数的虚部 复数表示为 real + imag i (如 2 + 3i) public: complex() { real=0; image=0; } complex(double r, double i) { real=r; imag=i; } void input(); //输入函数 void output(); //输出函数 void add(complex a); void sub(complex a); ……………………………… //加、减、乘、除为成员函

试用C语言的结构类型定义表示复数的抽象数据类型

#include //结构体 typedef struct { double a; double b; } COMPLEX; //加 COMPLEX add (COMPLEX a, COMPLEX b) { a.a += b.a; a.b += b.b; return a; } //减 COMPLEX subtract (COMPLEX a, COMPLEX b) { a.a -= b.a; a.b -= b.b; return a; } //乘 COMPLEX multiply (COMPLEX a, COMPLEX b) { COMPLEX c; c.a = a.a*b

关于C语言的题目:用结构体定义一个复数,并实现复数的加法、减法和乘法。

#include

struct complex

{

int re;

int im;

};

void add(struct complex a, struct complex b, struct complex *c)

{

c->re=a.re+b.re;

c->im=a.im+b.im;

}

void minus(struct complex a, struct complex b, struct complex *c)

{

c->re=a.re-b.re;

c->im=a.im-b.im;

}

int main()

{

struct complex x,y,s,p;

scanf("%d%d",&x.re,&x.im);

scanf("%d%d",&y.re,&y.im);

add(x,y,&s);

printf(" sum=%5d+%5di\n",s.re,s.im);

minus(x,y,&p);

printf(" product=%5d+%5di\n",p.re,p.im);

}

扩展资料:

复数运算法则

1、加法交换律:z1+z2=z2+z1

2、乘法交换律:z1×z2=z2×z1

3、加法结合律:(z1+z2)+z3=z1+(z2+z3)

4、乘法结合律:(z1×z2)×z3=z1×(z2×z3)

5、分配律:z1×(z2+z3)=z1×z2+z1×z3

要求建立一种抽象数据类型来实现复数的加减乘法,请各位大神看看我的程序为啥一种编译不过呢?哪里出现错

明显是主函数中cin>>a>>b;这一行的问题,如果是C++的编译环境,加进一个重载的运算符函数就可以了,输入的实部和虚部分别用空格隔开: istream & operator >> (istream &is, const unreal &ur) { is >> ur.i >> ur.j; return is; } 如果不是C++ 环境,这一句就改成: cin >> a.i >> a.j; cin >> b.i >> b.j;

如何用c语言编一个复数的四则运算

1、设计一个可进行复数运算的演示程序。要求实现下列六种基本运算
1)由输入的实部和虚部生成一个复数
2)两个复数求和;
3)两个复数求差;
4)两个复数求积,
5)从已知复数中分离出实部;
6)从已知复数中分离出虚部。
运算结果以相应的复数或实数的表示形式显示(最好用结构体的方法)
要是能用c++和stl,可以这样写#include #include void main(){ using namespace std; complex a(3, 2); complex b(5, 6); complex result(0,0); result = a*b/(a+b); cout << result;}
2、例程:

stdio.h>
#include
#include
#defineERR-1
#defineMAX100/*定义堆栈的大小*/
intstack[MAX];/*用一维数组定义堆栈*/
inttop=0;/*定义堆栈指示*/
intpush(inti)/*存储运算数,入栈操作*/
{
if(top{
stack[++top]=i;/*堆栈仍有空间,栈顶指示上移一个位置*/
return0;
}
else
{
printf("Thestackisfull");
returnERR;
}
}
intpop()/*取出运算数,出栈操作*/
{
intvar;/*定义待返回的栈顶元素*/
if(top!=NULL)/*堆栈中仍有元素*/
{
var=stack[top--];/*堆栈指示下移一个位置*/
returnvar;/*返回栈顶元素*/
}
else
printf("Thestackisempty!\n");
returnERR;
}
voidmain()
{
intm,n;
charl;
inta,b,c;
intk;
do{
printf("\tAriothmaticOperatesimulator\n");/*给出提示信息*/
printf("\n\tPleaseinputfirstnumber:");/*输入第一个运算数*/
scanf("%d",&m);
push(m);/*第一个运算数入栈*/
printf("\n\tPleaseinputsecondnumber:");/*输入第二个运算数*/
scanf("%d",&n);
push(n);/*第二个运算数入栈*/
printf("\n\tChooseoperator(+/-/*//):");
l=getche();/*输入运算符*/
switch(l)/*判断运算符,转而执行相应代码*/
{
case'+':
b=pop();
a=pop();
c=a+b;
printf("\n\n\tTheresultis%d\n",c);
printf("\n");
break;
case'-':
b=pop();
a=pop();
c=a-b;
printf("\n\n\tTheresultis%d\n",c);
printf("\n");
break;
case'*':
b=pop();
a=pop();
c=a*b;
printf("\n\n\tTheresultis%d\n",c);
printf("\n");
break;
case'/':
b=pop();
a=pop();
c=a/b;
printf("\n\n\tTheresultis%d\n",c);
printf("\n");
break;
}
printf("\tContinue?(y/n):");/*提示用户是否结束程序*/
l=getche();
if(l=='n')
exit(0);
}while(1);
}

标签:复数 编程 信息技术 CC++ C(编程语言)

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18