重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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
}
这是比较清晰和理性的写法。可以直接用calloc来分配二维数组,这里就不详细叙述了。
下面再写写结构体数组法。
既然是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++的话,可以重载+、-、*、\操作符的方式