當前位置:首頁 » 編程語言 » c語言怎麼求復數解
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼求復數解

發布時間: 2022-10-03 07:51:42

1. c語言復數四則運算

我們設計一個可進行復數運算的演示程序。要求實現下列六種基本運算
:1)由輸入的實部和虛部生成一個復數
;2)兩個復數求和;
3)兩個復數求差;
4)兩個復數求積,
5)從已知復數中分離出實部;
6)從已知復數中分離出虛部。
運算結果以相應的復數或實數的表示形式顯示(最好用結構體的方法)
要是能用c++和stl,可以這樣寫#include <complex>#include <iostream>void main(){ using namespace std; complex<double> a(3, 2); complex<double> b(5, 6); complex<double> result(0,0); result = a*b/(a+b); cout << result;}
下面是具體的操作:

stdio.h>
#include<conio.h>
#include<stdlib.h>
#define ERR -1
#define MAX 100 /*定義堆棧的大小*/
int stack[MAX]; /*用一維數組定義堆棧*/
int top=0; /*定義堆棧指示*/

int push(int i) /*存儲運算數,入棧操作*/
{
if(top<MAX)
{
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);
}

2. C語言 復數表示與求和

在數學中一個復數可以定義為 (z=a + bi) 的形式。 C 語言在 ISO C99 時就引入了復數類型。它是通過 complex.h 中定義的。 我們可以使用 complex , __complex__ , 或 _ComplexI 類型符號來表示。

在C語言中有三種復數類型,分別為 float complex , double complex , long double complex 。他們之間 的區別就是表示復數中實部和虛步的數的數據類型不同。 complex 其實就是一個數組,數組中有兩個元素,一個表示復數的實部,一個表示復數的虛部。

源代碼如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

double sum(double* x);

void main()
{

double *a,s=0.0;
a=(double*)malloc(sizeof(double));
*a=5;
s=sum(a);

printf("求和的結果是: %lf ",s);

}double sum(double* x)

{

int j=0;
double s=0.0;

for(j=0;j<=3;j++)
{
s=s+pow(*x,j);
}

s=s*2;

return s;
}

(2)c語言怎麼求復數解擴展閱讀

輸入任意兩個復數差與商的源代碼如下

typedefstruct{

floatr;

floatim;

Complex;

Complexres;

Complex*add(Complex*a,Complex*b){

res.r=a->r+b->r;

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

return&res;
}
Complex*div(Complex*a,Complex*b){

floatd=(b->r*b->r+b->im*b->im);

res.r=(a->r*b->r+a->im*b->im)/d;

res.im=(a->im*b->r-a->r*b->im)/d;

return&res;

3. 對於C語言中用求根公式求出復數怎麼寫

#include <stdio.h>

#include <math.h>

int main()

{ double a,b,c,d;

scanf("%lf%lf%lf",&a,&b,&c);

printf("%g %g %g ",a,b,c);

d=b*b-4*a*c;

if(d>0)

printf("x1=%g x2=%g ",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));

else if(d==0)

printf("x1=x2=%g ",-b/(2*a));

else

printf("x1=%g+%gi x2=%g-%gi ",-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a));

return 0;

}

4. C語言中怎麼進行復數的定義及運算

定義成結構體 實部和虛部分別定義成double,然後在自己定義運算……
如果是C++的話,可以重載+、-、*、\操作符的方式

5. 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;
}
//求兩個復數的差
complex subComplex(complex complex1,complex complex2)
{
complex Node=new complex();
Node.rmz=complex1.rmz-complex2.rmz;
Node.lmz=complex1.lmz-complex2.lmz;
return Node;
}
//求兩個復數的積
complex proctComplex(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;
}

6. 用c語言求解復數域一元二次方程

#include<stdio.h>
#include<math.h>
int main(){
int a,b,c;
int t;
//t就是b^2-4ac判斷它和0的大小決定是解否是復數
printf("推出請按Ctrl+c,輸入非數字後果自付.\n");
//Ctrl+c是 windows下的文件結束符.在命令行下不是拷貝快捷鍵
while(1){
a=b=c=t=0;
//初始化
scanf("%d %d %d",&a,&b,&c);
//輸入數據
if(a==0){printf("input error!\n");continue;}
//如果輸入二次項系數為零顯示告訴用戶
t=b*b-4*a*c;
if (t<0){
printf("x1=%.6lf+%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);
printf("x1=%.6lf-%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);

}else {
printf("x1=%.6lf+0i\n",-b/2.0/a+sqrt(t)/2/a);
printf("x1=%.6lf+0i\n",-b/2.0/a-sqrt(t)/2/a);
}
}
return 0;}

7. 用c語言如何輸出復數

這不是c語言的問題。
數學上復數的表示方法是 a + bi,按這個形式輸出就可以了,比如:
1+9i
-3.45-8.33i

輸出方法這樣就行:
print("%f+%fi", a, b);

8. 如何用c語言編一個復數的四則運算

創建一個結構體,分為實部和虛部兩個成員。進行運演算法時,利用成員變數進行做

9. 在C語言環境下實現復數運算

亂七八糟寫了一個,肯定有很多不對的地方,懶得找了,如果你找到了發QQ(252290278)給我吧
#include
<stdio.h>
#include<string.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;i<l;i++)//將整數部分的值存放到整數a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=1;j<i;j++)
a=a*10+num[j]-'0';
break;
}
}
else
if('-'==num[0])//如果實部是負數
{
for(i=1;i<l;i++)//將整數部分的值存放到整數a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=1;j<i;j++)
a=a*10-(num[j]-'0');
break;
}
}
}
else
if(1==ope(num))//一個符號,即實部為正數或者沒有實部
{
for(i=0;i<l;i++)//將整數部分的值存放到整數a中
if('+'==num[i]
||
'-'==num[i])
{
for(j=0;j<i;j++)
a=a*10+(num[j]-'0');
break;
}
}
//將虛數部分的值存放到整數b中
if('+'==num[i])//如果虛部是正數
for(j=i+1;j<l-1;j++)
b=b*10+num[j]-'0';
else
if('-'==num[i])
for(j=i+1;j<l-1;j++)
b=b*10-(num[j]-'0');
}
else//沒有符號
for(i=0;i<l-1;i++)
b=b*10+num[j]-'0';
}
else//沒有虛部
{
if('-'==num[0])//實部是負數
for(i=1;i<l;i++)//將整數部分的值存放到整數a中
a=a*10-(num[i]-'0');
else
{
i=0;
if('+'==num[0])//實部是正數
i++;
for(;i<l;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(b>0)
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;i<n;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;
}

10. C語言中復數的運算怎麼實現

C語言的話,C99標準是支持復數運算的.需要包含頭文件complex.h,
裡面幾乎包含了所有復數計算會用到的基本初等函數, 比如三角函數,冪函數,對數函數等等.

gcc是個常見的支持C99標準的編譯器,