c语言函数复数计算 c语言实现复数加减法

用c语言编写程序:输入两个复数,计算并输出它们的和及乘积输入两个复数 , 计算并输出它们的和及乘积c语言编写:
#includestdio.h
#includemath.h
void main()
{int i1,i2,j1,j2;
int sum(int i1,int i2,int j1,int j2);
int mul(int i1,int i2,int j1,int j2);
printf("请输入第一个复数的实部和虚部:");
scanf("%d %d",i1,i2);
printf("请输入第二个复数的实部和虚部:");
scanf("%d %d",j1,j2);
sum(i1,i2,j1,j2);
mul(i1,i2,j1,j2);
}
int sum(int i1,int i2,int j1,int j2)
{
int i,j;
i=i1 j1;
j=i2 j2;
printf("两复数的和为:%d %di\n",i,j);
return 0;
}
int mul(int i1,int i2,int j1,int j2)
{
int i,j;
i=i1*j1-i2*j2;
j=i2*j1 i1*j2;
printf("两复数的积为:%d %di\n",i,j);
return 0;
}
C语言是一种计算机程序设计语言 , 它既具有高级语言的特点 , 又具有汇编语言的特点 。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言 , 编写系统应用程序,也可以作为应用程序设计语言 , 编写不依赖计算机硬件的应用程序 。它的应用范围广泛 , 具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维 , 二维图形和动画,具体应用比如单片机以及嵌入式系统开发 。
C语言基本特性:
1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元 。
2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立 。这种结构化方式可使程序层次清晰,便于使用、维护以及调试 。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化 。
3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型 。C语言对编写需要进行硬件操作的场合,优于其它高级语言 。
4、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素 。C在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病 。Java则吸取了C的教训,取消了指针操作,也取消了C改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果 , 但其本身解释在虚拟机中运行,运行效率低于C/C 。一般而言,C,C,java被视为同一系的语言,它们长期占据着程序使用榜的前三名 。
c语言负数运算/*
c语言复数运算
*/
#includestdio.h
#includestdlib.h
typedef struct
{
double r,i; //r为实部 , i为虚部
}complex;
complex* add(complex *a,complex *b); //复数a复数b
complex* minus(complex *a,complex *b);//复数a - 复数b
complex* multiply(complex *a,complex *b); //复数a * 复数b
void printComplex(complex *a); //输出
complex* add(complex *a,complex *b) {
complex *add;
add-r =a-r b-r;
add-i =a-i b-i;
return add;
}
complex* minus(complex *a,complex *b)
{
complex *minus;
minus-r =a-r-b-r;
minus-i =a-i-b-i;
return minus;
}
complex* multiply(complex *a,complex *b)
{
complex *multiply;
multiply-r = a-r*b-r-a-i*b-i;
multiply-i = a-i*b-r a-r*b-i;
return multiply;
}
void printComplex(complex *a) //输出要注意虚部有负数的情况
{
if(a-r!=0)
printf("%.2lf",a-r); //不要断行,先输出实部
else
printf("0.00");
if(a-i0) //大于0,正常输出 虚部
printf("%.2lfi\n",a-i);
else if(a-i0)//虚部是负数,不用输出 号了,直接输出负数
printf(" %.2lfi\n",a-i);
else
printf("0.00i\n");//虚部为0
}
帮你改了下,再去试试吧 。一时之间我也想不出还有什么漏洞了 。祝好运 。如果是自己写主函数的话,改一改那个输入吧,输入很容易会造成问题的
这一句: scanf("...%f%c ",...,c),一个不好输入就会出错 , c可能会获取到空白 。
c语言 复数 运算这个是一个列子c语言函数复数计算 , 可以参考下
struct complex{
float rmz; //实部
float lmz;//虚部
};
//产生一个复数.
complex getAComplex(float a,float b){
complex Node=new complex();
Node.rmz=a;
Node.lmz=b;
return Node;}
//两个复数求和
complex addComplex(complex complex1,complex complex2)
{
complex Node=new complex();
Node.rmz=complex1.rmz complex2.rmz;
Node.lmz=complex1.lmz complex2.lmz;
return Node;
}
//求两个复数c语言函数复数计算的差
complex subComplex(complex complex1,complex complex2)
{
【c语言函数复数计算 c语言实现复数加减法】complex Node=new complex();
Node.rmz=complex1.rmz-complex2.rmz;
Node.lmz=complex1.lmz-complex2.lmz;
return Node;
}
//求两个复数c语言函数复数计算的积
complex productComplex(complex complex1,complex complex2)
{
complex Node=new complex();
Node.rmz=complex1.rmz*complex2.rmz-complex1.lmz*complex2.lmz;
Node.lmz=complex1.lmz*complex2.rmz complex2.lmz*complex2.rmz;
return Node;
}
//求实部
float getComplexRmz(complex complex1)
{
return complex1.rmz;
}
//求虚部
float getComplexLmz(complex complex1)
{
return complex1.lmz;
}
在C语言环境下实现复数运算乱七八糟写了一个 , 肯定有很多不对的地方,懒得找了 , 如果你找到了发QQ(252290278)给我吧
#include
stdio.h
#includestring.h
int
ope(char
num[])//计算有几个符号
{
int
count=0;
for(int
i=0;num[i]!='\0';i)
if(' '==num[i]
||
'-'==num[i])
count;
return
count;
}
void
inone(double
a,double
b)//输入一个复数
{
int
i,j,l;
char
num[100];
scanf("%s",num);
l=strlen(num);
if('i'==num[l-1])//有虚部
{
if(ope(num))//如果有符号
{
i=0;
if(2==ope(num))//有两个符号
{
if(' '==num[0])//如果实部是正数
{
for(i=1;il;i)//将整数部分的值存放到整数a中
if(' '==num[i]
||
'-'==num[i])
{
for(j=1;ji;j)
a=a*10 num[j]-'0';
break;
}
}
else
if('-'==num[0])//如果实部是负数
{
for(i=1;il;i)//将整数部分的值存放到整数a中
if(' '==num[i]
||
'-'==num[i])
{
for(j=1;ji;j)
a=a*10-(num[j]-'0');
break;
}
}
}
else
if(1==ope(num))//一个符号 , 即实部为正数或者没有实部
{
for(i=0;il;i)//将整数部分的值存放到整数a中
if(' '==num[i]
||
'-'==num[i])
{
for(j=0;ji;j)
a=a*10 (num[j]-'0');
break;
}
}
//将虚数部分的值存放到整数b中
if(' '==num[i])//如果虚部是正数
for(j=i 1;jl-1;j)
b=b*10 num[j]-'0';
else
if('-'==num[i])
for(j=i 1;jl-1;j)
b=b*10-(num[j]-'0');
}
else//没有符号
for(i=0;il-1;i)
b=b*10 num[j]-'0';
}
else//没有虚部
{
if('-'==num[0])//实部是负数
for(i=1;il;i)//将整数部分的值存放到整数a中
a=a*10-(num[i]-'0');
else
{
i=0;
if(' '==num[0])//实部是正数
i;
for(;il;i)
a=a*10 num[i]-'0';
}
}
}
void
intwo(double
a,double
b,double
c,double
d)//输入两个复数
{
a=b=c=d=0;
printf("请输入第一个复数:\n");
inone(a,b);
printf("请输入第二个复数:\n");
inone(c,d);
}
void
pri(double
a,double
b)//输出
{
if(0==a
0==b)
{
printf("0\n");
return;
}
if(a)
printf("%d",a);
if(b)
{
if(b0)
printf(" ");
printf("%di",b);
}
printf("\n");
}
void
add()//加
{
double
a,b,c,d;
intwo(a,b,c,d);
printf("这两个复数相加的结果为:");
pri(a c,b d);
}
void
sub()//减
{
double
a,b,c,d;
intwo(a,b,c,d);
printf("这两个复数相减的结果为:");
pri(a-c,b-d);
}
void
mul()//乘
{
double
a,b,c,d;
intwo(a,b,c,d);
printf("这两个复数相乘的结果为:");
pri(a*c-b*d,b*c a*d);
}
void
exc()//除
{
double
a,b,c,d;
intwo(a,b,c,d);
if(c==0
d==0)
{
printf("错误,除数为零!\n");
return;
}
printf("这两个复数相除的结果为:");
pri((a*c b*d)/(c*c d*d),(b*c-a*d)/c*c d*d);
}
void
vei()//幂
{
int
n;
double
a,b,c,d;
intwo(a,b);
c=a;d=b;
printf("请出入n次幂(只能为整数!):\n");
scanf("%d",n);
for(i=1;in;i)
{
a=a*c-b*d;
b=b*c a*d;
}
printf("这个复数相减的结果为:");
pri(a,b);
}
int
main()
{
int
n;
char
ch;
while(1)
{
printf("请选择需要的运算:\n");
printf("0.退出\n");
printf("1.加运算\n");
printf("2.减运算\n");
printf("3.乘运算\n");
printf("4.除运算\n");
printf("5.幂运算\n");
scanf("%c",ch);
while('
'==ch
||
'\n'==ch)
scanf("%c",ch);
if(ch'0'
||
ch'9')
{
printf("输入错误请重新输入!\n");
continue;
}
n=ch-'0';
switch(n)
{
case
0:
return
0;
case
1:
add();
break;
case
2:
sub();
break;
case
3:
mul();
break;
case
4:
exc();
break;
case
5:
vei();
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
return
0;
}
如何用c语言编一个复数的四则运算1、设计一个可进行复数运算的演示程序 。要求实现下列六种基本运算
1)由输入的实部和虚部生成一个复数
2)两个复数求和;
3)两个复数求差;
4)两个复数求积,
5)从已知复数中分离出实部;
6)从已知复数中分离出虚部 。
运算结果以相应的复数或实数的表示形式显示(最好用结构体的方法)
要是能用c和stl,可以这样写#include complex#include iostreamvoid main(){ using namespace std; complexdouble a(3, 2); complexdouble b(5, 6); complexdouble result(0,0); result = a*b/(a b); coutresult;}
2、例程:
stdio.h
#includeconio.h
#includestdlib.h
#define ERR -1
#define MAX 100 /*定义堆栈的大小*/
int stack[MAX]; /*用一维数组定义堆栈*/
int top=0; /*定义堆栈指示*/
int push(int i) /*存储运算数,入栈操作*/
{
if(topMAX)
{
stack[top]=i; /*堆栈仍有空间 , 栈顶指示上移一个位置*/
return 0;
}
else
{
printf("The stack is full");
return ERR;
}
}
int pop() /*取出运算数 , 出栈操作*/
{
int var; /*定义待返回的栈顶元素*/
if(top!=NULL) /*堆栈中仍有元素*/
{
var=stack[top--]; /*堆栈指示下移一个位置*/
return var; /*返回栈顶元素*/
}
else
printf("The stack is empty!\n");
return ERR;
}
void main()
{
int m,n;
char l;
int a,b,c;
int k;
do{
printf("\tAriothmatic Operate simulator\n"); /*给出提示信息*/
printf("\n\tPlease input first number:"); /*输入第一个运算数*/
scanf("%d",m);
push(m); /*第一个运算数入栈*/
printf("\n\tPlease input second number:"); /*输入第二个运算数*/
scanf("%d",n);
push(n); /*第二个运算数入栈*/
printf("\n\tChoose operator( /-/*//):");
l=getche(); /*输入运算符*/
switch(l) /*判断运算符,转而执行相应代码*/
{
case ' ':
b=pop();
a=pop();
c=a b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '-':
b=pop();
a=pop();
c=a-b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '*':
b=pop();
a=pop();
c=a*b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '/':
b=pop();
a=pop();
c=a/b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
}
printf("\tContinue?(y/n):"); /*提示用户是否结束程序*/
l=getche();
if(l=='n')
exit(0);
}while(1);
}
C语言函数题 复数的运算定义成结构体 实部和虚部分别定义成doublec语言函数复数计算,然后在自己定义运算……
如果是Cc语言函数复数计算的话,可以重载 、-、*、\操作符的方式
关于c语言函数复数计算和c语言实现复数加减法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读