導航:首頁 > 編程語言 > c語言編程復數

c語言編程復數

發布時間:2022-04-19 08:52:05

A. 在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;
}

B. C語言(有關復數)

你在VC中得不到正確的結果是因為printf函數的描述符用錯了,把%d改為%f
在TC中編譯錯誤是因為TC比VC檢查要嚴格,是一個標準的C編譯器,而VC其實是一個VC++編譯器
在TC中聲明了結構之後定義結構變數不能省略struct關鍵字,如要省略,則必須給該結構類型起個別名。對於你的程序來說,只要把復數類型聲明改為如下方式即可,你試試吧:
typedef struct {
double real;
double imag;
} complex;

C. C語言關於復數

#include<stdio.h>

typedefstruct{
floatr;
floati;
}Complex;

ComplexreadComlexNumber(){
Complexn;
printf("Inputrealpart:");
scanf("%f",&n.r);
printf("Inputimaginarypart:");
scanf("%f",&n.i);
returnn;
}

ComplexsumComplex(Complexa,Complexb){
Complexc;
c.r=a.r+b.r;
c.i=a.i+b.i;
returnc;
}

ComplexdiffereneComplex(Complexa,Complexb){
Complexc;
c.r=a.r-b.r;
c.i=a.i-b.i;
returnc;
}

ComplexmultiplyComplex(Complexa,Complexb){
Complexc;
c.i=a.r*b.i+a.i*b.r;
c.r=a.r*b.r-a.i*b.i;
returnc;
}

ComplexdivideComplex(Complexa,Complexb){
Complexc;
c.r=(a.r*b.r+a.i*b.i)/(b.r*b.r+b.i*b.i);
c.i=(a.i*b.r-a.r*b.i)/(b.r*b.r+b.i*b.i);
returnc;
}

voidprintComplex(Complexn){
printf("%.2f+%.2fi",n.r,n.i);
}

intmain(){
Complexa,b,c;
printf("InputComplexnumbera: ");
a=readComlexNumber();

printf("InputComplexnumberb: ");
b=readComlexNumber();

printf("The2Complexa&bis: ");
printComplex(a);printf("and");printComplex(b);

//sum
c=sumComplex(a,b);
printf(" (a+b)=");printComplex(c);
//diff
c=differeneComplex(a,b);
printf(" (a-b)=");printComplex(c);

//multiply
c=multiplyComplex(a,b);
printf(" (a*b)=");printComplex(c);
//divide
c=divideComplex(a,b);
printf(" (a/b)=");printComplex(c);

return0;
}

D. 急!!!復數運算C語言程序

structcomplex{
floatrmz;//實部
floatlmz;//虛部
};
//產生一個復數.
complexgetacomplex(floata,floatb){
complexnode=newcomplex();
node.rmz=a;
node.lmz=b;
returnnode;}
//兩個復數求和
complexaddcomplex(complexcomplex1,complexcomplex2)
{
complexnode=newcomplex();
node.rmz=complex1.rmz+complex2.rmz;
node.lmz=complex1.lmz+complex2.lmz;
returnnode;
}
//求兩個復數的差
complexsubcomplex(complexcomplex1,complexcomplex2)
{
complexnode=newcomplex();
node.rmz=complex1.rmz-complex2.rmz;
node.lmz=complex1.lmz-complex2.lmz;
returnnode;
}
//求兩個復數的積
complexproctcomplex(complexcomplex1,complexcomplex2)
{
complexnode=newcomplex();
node.rmz=complex1.rmz*complex2.rmz-complex1.lmz*complex2.lmz;
node.lmz=complex1.lmz*complex2.rmz+complex2.lmz*complex2.rmz;
returnnode;
}
//求實部
floatgetcomplexrmz(complexcomplex1)
{
returncomplex1.rmz;
}
//求虛部
floatgetcomplexlmz(complexcomplex1)
{
returncomplex1.lmz;
}

E. 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;
}

F. c語言中如何定義一個復數型數組

首先加入頭文件:
#include
<complex>
然後進行復數類型定義:
typedef
complex<float>
Comp;//這里double也可
這樣就可以使用復數結構了
如:聲明復數數組
Comp
a[5];

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

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

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

H. 在C語言中,在VC程序中,復數如何表示

在FORTRAN語言中是有復數的。(最早的語言)
表示方法為(a,b)---a實部b虛部。FORTRAN語言可以復數計算。
在C語言中,在VC程序中可能是沒有的。
你要用可以自己在C語言中用復數計算規則自己擴展。VC程序擴展更方便了,類型與運算操作符重載。

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

1、設計一個可進行復數運算的演示程序。要求實現下列六種基本運算
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;}
2、常式:

stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineERR-1
#defineMAX100/*定義堆棧的大小*/
intstack[MAX];/*用一維數組定義堆棧*/
inttop=0;/*定義堆棧指示*/
intpush(inti)/*存儲運算數,入棧操作*/
{
if(top<MAX)
{
stack[++top]=i;/*堆棧仍有空間,棧頂指示上移一個位置*/
return0;
}
else
{
printf("Thestackisfull");
returnERR;
}
}
intpop()/*取出運算數,出棧操作*/
{
intvar;/*定義待返回的棧頂元素*/
if(top!=NULL)/*堆棧中仍有元素*/
{
var=stack[top--];/*堆棧指示下移一個位置*/
returnvar;/*返回棧頂元素*/
}
else
printf("Thestackisempty! ");
returnERR;
}
voidmain()
{
intm,n;
charl;
inta,b,c;
intk;
do{
printf(" AriothmaticOperatesimulator ");/*給出提示信息*/
printf(" Pleaseinputfirstnumber:");/*輸入第一個運算數*/
scanf("%d",&m);
push(m);/*第一個運算數入棧*/
printf(" Pleaseinputsecondnumber:");/*輸入第二個運算數*/
scanf("%d",&n);
push(n);/*第二個運算數入棧*/
printf(" Chooseoperator(+/-/*//):");
l=getche();/*輸入運算符*/
switch(l)/*判斷運算符,轉而執行相應代碼*/
{
case'+':
b=pop();
a=pop();
c=a+b;
printf(" Theresultis%d ",c);
printf(" ");
break;
case'-':
b=pop();
a=pop();
c=a-b;
printf(" Theresultis%d ",c);
printf(" ");
break;
case'*':
b=pop();
a=pop();
c=a*b;
printf(" Theresultis%d ",c);
printf(" ");
break;
case'/':
b=pop();
a=pop();
c=a/b;
printf(" Theresultis%d ",c);
printf(" ");
break;
}
printf(" Continue?(y/n):");/*提示用戶是否結束程序*/
l=getche();
if(l=='n')
exit(0);
}while(1);
}

J. 數據結構c語言復數運算

1、首先打開vc6.0, 新建一個項目。

閱讀全文

與c語言編程復數相關的資料

熱點內容
壓縮包解碼器下載 瀏覽:130
愛旅行的預備程序員 瀏覽:111
安卓qq瀏覽器怎麼轉換到ios 瀏覽:292
不同編譯器的庫可以調用嗎 瀏覽:455
灰度信託基金加密 瀏覽:421
宿遷程序員兼職網上接單 瀏覽:924
電視編譯器怎麼設置 瀏覽:276
手機如何解壓漢字密碼的壓縮包 瀏覽:701
為什麼很多程序員愛用vim 瀏覽:828
安卓手機怎麼連接寶華韋健音響 瀏覽:555
12星座製作解壓球 瀏覽:867
java調用oracle數據 瀏覽:827
怎麼在伺服器上上傳小程序源碼 瀏覽:304
空中加油通達信指標公式源碼 瀏覽:38
分卷解壓只解壓了一部分 瀏覽:760
php網站自動登錄 瀏覽:705
合肥凌達壓縮機招聘 瀏覽:965
怎麼找到文件夾的圖標 瀏覽:237
linuxc編程pdf百度雲 瀏覽:192
會計pdf下載 瀏覽:835