当需要调用函数的个数比较少时,可以直接在main函数中包含该文件,比如一个文件夹下包含add.c和main.c文件。
文件add.c定义两个整数相加的函数,code如下:#include#includeintadd(inta,intb){intz;z=a+b;returnz;},主函数main.c的code如下:#include#include#include"add.c"intmain(){inti,j,k;i=1;j=2;k=add(i,j);printf("iaddj=%d",k);},编译生成可执行文件:gcc-omainmain.c,执行:./main。
1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。
函数名及解释:
int abs(int i) 返回整型参数i的绝对值
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
double exp(double x) 返回指数函数ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
double ldexp(double value,int exp)返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double tan(double x) 返回x的正切tan(x)值,x为弧度
double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度
double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度
double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2
2、复杂的数学函数可以用自定义函数的形式实现。
例如:
double ConerVelocity(int A, double x1, double y1, double x2, double y2, double t1, double t2){
double T,V
T=acos(abs(x1 * x2 + y1 * y2)/ sqrt(x1 * x1 +y1 * y1)/sqrt(x2 * x2 +y2 * y2))
V= (A * (t2-t1))/(2*sin(T/2))
return V
}
感觉题目有问题呀,三个向量A(80,90,100),B(90,80,70),C(60,70,60)
按定义,X属于集合(A,B,C),当且仅当X<=X(即对于任意D是集合(A,B,C)中非X的元素,X<=D都不成立),X为集合的的极小元素。
那么,按定义,C<=C,C=A,C<=B 都成立,C不是极小元素。而题目却说C是极小元素。
我这么理解有问题吗?
如果是题目表达有错,根据他给的例子,我猜测题目想表达的意思是求三个分向量都是最小的向量。这样的话求法是:对坐标1排序,找到最小值,再将坐标1最小的向量的坐标2,坐标3进行验证,验证是否是最小的(验证的话,就不需要排序了,每个比较一次就行了)
还有一种理解,找出集合中的向量X,该向量满足:在集合中,不存在某个向量D,D的三个坐标都比X的大(或者是对于所有非X向量,三坐标中至少有一个比X小)。这么理解的话,求法是:
集合E(总数据),集合E4(E中最小元素的集合候选集,初始时和E相同),集合E5(E中最小元素的集合)
在集合E4中选取某个向量X,若E4为空集,则算法结束,E5为最小元素的集合
在E中比较坐标1,将坐标1比X的坐标1大的向量归为集合E1,若集合E1为空集,那么X为极小元素,将X从E4中剔除,将X加入E5,跳转1
在E1中比较坐标2,将坐标2比X的坐标2大的向量归为集合E2,若集合E2为空集,那么X为极小元素,将X从E4中剔除,将X加入E5,跳转1
在E2中比较坐标3,将坐标3比X的坐标3大的向量归为集合E3,若集合E3为空集,那么X为极小元素,将X加入E5,否则X不为极小元素。
将X从E4中剔除,跳转1
又或者我上面的理解都是错的~~~~~