1、首先打開vc6.0, 新建一個項目。
創新互聯專業為企業提供丹江口網站建設、丹江口做網站、丹江口網站設計、丹江口網站制作等企業網站建設、網頁設計與制作、丹江口企業網站模板建站服務,十年丹江口做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
2、添加stdio.h頭文件。
3、添加math.h頭文件。
4、添加main主函數。
5、定義結構體z。
6、定義double類型val變量。
7、初始化z。
8、使用cabs函數。
9、使用printf打印信息。
10、運行程序,看看結果。
有兩種方法,一個是直接二維數組,一個是結構體數組。推薦你用二維數組。
既然是復數,那肯定是浮點型。
double ** AllocCplxArray(int m, int n)
{
int i; // 中間變量
double **ptrArray = NULL; // m * n矩陣
// 先分配m
*ptrArray = (double **)malloc(m * sizeof(double *));
if (*ptrArray == NULL) return NULL; // 分配失敗
// 再分配n
for (i = 0; i m; i++)
{
ptrArray[i] = (double *)malloc(n * sizeof(double));
if (ptrArray[i] == NULL) // 分配失敗
{
for (--i; i = 0; i--) free(ptrArray[i]); // 回滾操作,即釋放已分配的空間
free(*ptrArray);
return NULL;
}
}
return ptrArray;
}
分配之后就可以用ptrArray[m][n]來訪問了。
void FreeCplxArray(int m, double **ptrArray)
{
if (*ptrArray == NULL) return;
for (--m; m = 0; m--)
if (ptrArray[m] != NULL) free(ptrArray[m]); // 釋放n
free(*ptrArray); // 釋放m
}
這是比較清晰和理性的寫法??梢灾苯佑胏alloc來分配二維數組,這里就不詳細敘述了。
下面再寫寫結構體數組法。
既然是m * n的矩陣,也就意味著可以歸類為(m, n)的向量。
那么就可以有結構體
typedef struct _CplxMatrix
{
double *m;
double *n;
} CplxMatrix;
CplxMatrix *AllocCplxArray(int m, int n)
{
CplxMatrix *ptrMatrix = NULL;
// 首先分配結構體
ptrMatrix = (CplxMatrix *)malloc(sizeof(CplxMatrix));
if (ptrMatrix == NULL) return NULL; // 分配失敗
// 分配m
ptrMatrix-m = (double *)malloc(m * sizeof(double));
if (ptrMatrix-m == NULL)
{
free(ptrMatrix);
return NULL;
}
// 分配n
ptrMatrix-n = (double *)malloc(n * sizeof(double));
if (ptrMatrix-n = NULL)
{
free(ptrMatrix-m);
free(ptrMatrix);
return NULL;
}
return ptrMatrix;
}
分配之后就可以用ptrMatrix-m[x]和ptrMatrix-n[y]來訪問了。
void FreeCplxArray(CplxMatrix *ptrMatrix)
{
if (ptrMatrix == NULL) return;
if (ptrMatrix-m != NULL) free(ptrMatrix-m);
if (ptrMatrix-n != NULL) free(ptrMatrix-n);
free(ptrMatrix);
}
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 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; }
希望采納
給你一個做加法的示例:
#include stdio.h
/*定義復數結構體*/
typedef struct
{
double real; /*復數的實部*/
double image; /*復數的虛部*/
}complex;
/*實現復數加法*/
complex add(complex c1,complex c2)
{
complex res;
res.real=c1.real+c2.real;
res.image=c1.image+c2.image;
return res;
}
/*測試*/
int main()
{
complex c1,c2;
c1.real=1;
c1.image=2;
c2.real=3;
c2.image=4;
complex sum=add(c1,c2);
printf("the sum of c1 and c2 is ( %f,%f )\n",sum.real,sum.image);
return 0;
}
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字符串函數
7、fputs文件寫入字符串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字符函數
12、putchar輸出字符函數
13、malloc動態申請內存函數
14、free釋放內存函數
15、abs求絕對值數學函數
16、sqrt求平方根數學函數
擴展資料
語言組成:
1、數據類型
C的數據類型包括:整型、字符型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變量
常量其值不可改變,符號常量名通常用大寫。
變量是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時為其分配相應存儲單元。
3、數組
如果一個變量名后面跟著一個有數字的中括號,這個聲明就是數組聲明。字符串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變量聲明時在前面使用 * 號,表明這是個指針型變量。換句話說,該變量存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別于其他同時代高級語言的主要特征之一。
參考資料來源:百度百科-函數
定義成結構體 實部和虛部分別定義成double,然后在自己定義運算……
如果是C++的話,可以重載+、-、*、\操作符的方式
網頁名稱:c語言復數函數庫 復數運算C語言
鏈接地址:http://m.kartarina.com/article2/hgghic.html
成都網站建設公司_創新互聯,為您提供靜態網站、外貿網站建設、響應式網站、網頁設計公司、商城網站、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯