本文目錄一覽:
用c語言如何輸出複數
這不是c語言的問題。
數學上複數的表示方法是 a + bi,按這個形式輸出就可以了,比如:
1+9i
-3.45-8.33i
輸出方法這樣就行:
print(“%f+%fi”, a, b);
C語言中怎麼進行複數的定義及運算
定義成結構體 實部和虛部分別定義成double,然後在自己定義運算……
如果是C++的話,可以重載+、-、*、\操作符的方式
c語言中如何定義一個複數型數組?
首先加入頭文件:
#include
complex
然後進行複數類型定義:
typedef
complexfloat
Comp;//這裡double也可
這樣就可以使用複數結構了
如:聲明複數數組
Comp
a[5];
數據結構c語言複數運算
1、首先打開vc6.0, 新建一個項目。
2、添加stdio.h頭文件。
3、添加math.h頭文件。
4、添加main主函數。
5、定義結構體z。
6、定義double類型val變數。
7、初始化z。
8、使用cabs函數。
9、使用printf列印信息。
10、運行程序,看看結果。
在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;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233878.html