新建 文本文档.txt
100个常用小程序(精心收集1)(2010-01-26 17:43:24)
转载标签: it 分类: C知识
这100个小程序是c语言头文件,以下是这些常用小程序调用
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
说明:
<%
1. 函数名:Error
功能:捕捉错误,结束程序
用法:void Error(char *message)
参数:message:错误信息
返回:无
2. 函数名:_Pause
功能:等待按键
用法:void _Pause(void)
参数:无
返回:无
3. 函数名:_delay
功能:延时
用法:void _delay(double delaytime)
参数:delaytime:秒数(精确到1微秒)
返回:无
4. 函数名:_time
功能:取得当前系统时间(当天经过的总秒数)
用法:double _time(void)
参数:无
返回:当天经过的总秒数(精确到1微秒)
5. 函数名:_dif
功能:计算两个时间差(可以用于计算程序的运行时间)
第 1 页
新建 文本文档.txt
用法:double _dif(double start,double end)
参数:start:开始时间,end:结束时间
返回:时间差(精确到1微秒)
程序例:
#include "mylib.h"
void main()
{
double start,end,dif;
start=_time();
_delay(5.00);
end=_time();
dif=_dif(start,end);
printf("\n%lf,%lf,%lf\n",start,end,dif);
}
6. 函数名:_Alloc2
功能:分配一个二维动态数组
用法:double **_Alloc2(int r,int c)
参数:r:行数,c:列数
返回:一个二维动态数组
7. 函数名:_Alloc2_int
功能:分配一个二维动态数组(整型数组)
用法:int **_Alloc2_int(int r,int c)
参数:r:行数,c:列数
第 2 页
新建 文本文档.txt
返回:一个二维动态数组
8. 函数名:_Alloc2Free
功能:释放一个二维动态数组
用法:void _Alloc2Free(double **x)
参数:一个二维动态数组
返回:无
9. 函数名:_dtoa
功能:将一个双精度型变量转换成字符串(保留三位有效的小数位数)
用法:void _dtoa(double value, char *string)
参数:value:双精度型变量,string:字符串
返回:无
10. 函数名:_putstring
功能:在图形界面下,输出字符串
用法:void _putstring(int x, int y, char *msg, int color)
参数:x:屏幕x坐标,y:屏幕y坐标,msg:字符串,color,字体颜色
返回:无
11. 函数名:_fac
功能:求一个数的阶乘(数不超过12)
用法:long _fac(int n)
参数:n:数
返回:阶乘
12. 函数名:_fac2
功能:求一个整型数的阶乘(数不超过32767)
用法:int _fac2(int n,int *a)
第 3 页
新建 文本文档.txt
参数:n:数,a:一维数组(存放阶乘产生后的各个位上的数字)
返回:阶乘的位数
13. 函数名:_random
功能:产生一个在(0,1)内均匀分布的随机数,要用randomize初始化随机数
发生器
用法:double _random(void)
参数:无
返回:随机数
14. 函数名:_rand
功能:产生一个在(0,seed)内均匀分布的随机整数
用法:int _rand(int seed)
参数:seed:上界
返回:随机整数
15. 函数名:_avg
功能:产生一个在(a,b)内均匀分布的随机数
用法:double _avg(double a,double b)
参数:a:下界,b:上界
返回:随机数
16. 函数名:_sta
功能:产生一个以mu为均值,sigma为方差的正态分布随机数
用法:double _sta(double mu,double sigma)
参数:mu:均值,sigma:方差
返回:正态分布随机数
17. 函数名:_sta2
第 4 页
新建 文本文档.txt
功能:产生一个以mu为均值,sigma为方差的正态分布随机数(时间较快,但
有bug)
用法:double _sta2(double mu,double sigma)
参数:mu:均值,sigma:方差
返回:正态分布随机数
18. 函数名:_kai
功能:产生一个以n为自由度的卡方分布
用法:double _kai(int n)
参数:n:自由度
返回:卡方分布随机数
19. 函数名:_tdis
功能:产生一个以n为自由度的t分布
用法:double _tdis(int n)
参数:n:自由度
返回:t分布随机数
20. 函数名:_F
功能:产生一个以n1和n2为自由度的F分布
用法:double _F(int n1,int n2)
参数:n1,n2:自由度
返回:F分布随机数
随机数部分程序实例:
#include "mylib.h"
void main()
{
第 5 页
新建 文本文档.txt
double _kai(int n);
long i;
double r;
double s,e,d;
s=_time();
randomize();
for(i=1;i<=10000;i++)
r=_kai(12);
e=_time();
d=_dif(s,e);
printf("%lf\n",d);
}
21. 函数名:_Poisson
功能:产生一个以lam为参数的泊松分布
用法:double _Poisson(int k,double lam)
参数:k,lam:参数
返回:泊松分布随机数
22. 函数名:_mean
功能:一个数组连续部分的平均值
用法:double _mean(double *a,int start,int end)
参数:a:数组,start:数组起始位置,end:数组终了位置
返回:平均值
23. 函数名:_variance
第 6 页
新建 文本文档.txt
功能:一个数组连续部分的方差
用法:double _variance(double *a,int start,int end)
参数:a:数组,start:数组起始位置,end:数组终了位置
返回:方差
24. 函数名:_Linear
功能:线性拟合
用法:double _Linear(double *x, double *y, double *a, double *b, int
n)
参数:x:拟合点的横坐标列表,y:纵坐标,a:截距,b:斜率,n:点的数
目
返回:拟合点方差的无偏估计量
25. 函数名:_Adj_Form
功能:由线的连接表生成邻接矩阵
用法:double **_Adj_Form(double (*a)[3], int n, int m)
参数:a:连接表(表中的前两个元素是边的两个端点,第三个元素是边的权
值),n:图的总结点数,m:边的个数
返回:邻接矩阵
26. 函数名:_Floyd
功能:Floyd算法求两点之间的最短路径
用法:double _Floyd(int i,int j,int k,double **d)
参数:i,j:两个点的标记,k:节点数减一
返回:最短路径
程序例:
#include "mylib.h"
#define MAX INT_MAX
第 7 页
新建 文本文档.txt
#define N 7
double di[N][N]={
{ MAX,2.0,5.0,3.0,MAX,MAX,MAX },
{ 2.0,MAX,2.0,MAX,MAX,7.0,MAX },
{ 5.0,2.0,MAX,1.0,3.0,5.0,MAX },
{ 3.0,MAX,1.0,MAX,5,MAX,MAX },
{ MAX,MAX,3.0,5.0,MAX,1.0,7.0 },
{ MAX,7.0,5.0,MAX,1.0,MAX,5.0 },
{ MAX,MAX,MAX,MAX,7.0,5.0,MAX }
} ;
void main(void)
{
double temp, **G;
int i,j;
G=_Alloc2(N,N);
for(i=0;i
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
(为_allrank所调用)
用法:void _allrank_dg(int m, int k, int s, int *a, int *flag, int
*iCount, int **rank)
参数:
第 14 页
新建 文本文档.txt
返回:无
37. 函数名:_allrank
功能:求m个元素的全排列问题
用法:void _allrank(int m, int **rank)
参数:m:元素个数,rank:所有排列表
返回:无
程序例:
#include "mylib.h"
void main()
{
int **rank, i, j;
clrscr();
rank=_Alloc2_int(120,5);
_allrank(5,rank);
for(i=0;i<120;i++)
{
for(j=0;j<5;j++)
printf("%d ",rank[i][j]);
printf("\n");
if(i%20==0) getch();
}
}
38. 函数名:_bolziman
第 15 页
新建 文本文档.txt
功能:退火算法Bolziman函数或Bolziman机学习
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
函数
用法:int _bolziman(double de,double t)
参数:de:能量差,t:当前温度
返回:是否接受
39. 函数名:_isprime
功能:判断一个数是否是质数
用法:int _isprime(long p)
参数:p:要判断的数
返回:是否是质数
40. 函数名:_prime
功能:第n个质数的值
用法:long _prime(int n)
参数:n
返回:第n个质数
程序例:
#include "mylib.h"
void main()
{
long p=65537;
int prime=1,n=12000;
long pp;
prime=_isprime(p);
printf("%d\n",prime);
pp=_prime(n);
第 16 页
新建 文本文档.txt
printf("%ld\n",pp);
}
41. 函数名:_swapi
功能:交换两个整型数据
用法:void _swapi(int *a,int *b)
参数:a,b:两个整型数据
返回:无
42. 函数名:_swapl
功能:交换两个长整型数据
用法:void _swapl(long *a,long *b)
参数:a,b:两个长整型数据
返回:无
43. 函数名:_swapd
功能:交换两个双精度型数据
用法:void _swapd(double *a,double *b)
参数:a,b:两个双精度型数据
返回:无
44. 函数名:_inv
功能:一个一维数组的转置
用法:void _inv(int *x,int n)
参数:x:一维数组,n:数组元素个数
返回:无
45. 函数名:_sort
第 17 页
新建 文本文档.txt
功能:冒泡排序
用法:void _sort(double *x,int n)
参数:x:一维数组,n:数组元素个数
返回:无
46. 函数名:_max2
功能:求两个数的较大值
用法:long _max2(long n,long m)
参数:n,m:长整型数
返回:较大值
47. 函数名:_min2
功能:求两个数的较小值
用法:long _min2(long n,long m)
参数:n,m:长整型数
返回:较小值
48. 函数名:_max
功能:求一组数的最大值,并返回这个数的所在位置
用法:double _max(double *array,int n,int *id)
参数:array:一维数组,n:元素个数,id:返回的最大值的所在位置
返回:最大值
49. 函数名:_min
功能:求一组数的最大值,并返回这个数的所在位置
用法:double _min(double *array,int n,int *id)
参数:array:一维数组,n:元素个数,id:返回的最小值的所在位置
返回:最小值
第 18 页
新建 文本文档.txt
50. 函数名:_GCD
功能:求两个数的最大公约数
用法:long _GCD(long m,long n)
参数:m,n
返回:最大公约数
51. 函数名:_LCM
功能:求两个数的最小公倍数
用法:long _LCM(long m,long n)
参数:m,n
返回:最小公倍数
52. 函数名:_initgraph
功能:初始化图形界面
用法:void _initgraph(void)
参数:无
返回:无
53. 函数名:_setPlotdefault
功能:设置缺省画图界面
用法:void _setPlotdefault(void)
参数:无
返回:无
54. 函数名:_Plot
功能:画一条函数曲线
用法:void _Plot(double (*f)(double x),double start,double end)
第 19 页
新建 文本文档.txt
参数:f:函数方程,start,end:左右区间
返回:无
程序例:
#include "mylib.h"
double f(double x)
{
return -x*x+8*x+10;
}
void main()
{
_initgraph();
_Plot(f,2,10);
while(bioskey(1)==0) ;
closegraph();
}
55. 函数名:_Line_equation
功能:线性方程
用法:double _Line_equation(double x, double a, double b)
参数:x:横坐标,a:截距,b:斜率
返回:纵坐标
56. 函数名:_Fit
功能:图形化进行的线性拟合
用法:void _Fit(double *x, double *y, int n)
参数:x:拟合点的横坐标表,y:拟合点的纵坐标表,n:拟合点的数目
第 20 页
新建 文本文档.txt
返回:无
程序例:
#include "mylib.h"
void main()
{
double x[]={2.0, 3.0, 4.0, 4.5, 5.0, 6.0, 7.2, 8.3, 8.9,10.0,14.2},
y[]={4.2, 5.5, 7.3, 9.6, 10.1,12.3,14.6,16.9,19.0,21.0,24.9};
_initgraph();
_Fit(x,y,11);
while(bioskey(1)==0) ;
closegraph();
}
57. 函数名:_Cplus
功能:复数的加法运算
用法:Complex _Cplus(Complex z1,Complex z2)
参数:z1,z2:两个复数
返回:运算后的复数
58. 函数名:_Cminus
功能:复数的减法运算
用法:Complex _Cminus(Complex z1,Complex z2)
参数:z1,z2:两个复数
返回:运算后的复数
59. 函数名:_Cmul
第 21 页
新建 文本文档.txt
功能:复数的乘法运算
用法:Complex _Cmul(Complex z1,Complex z2)
参数:z1,z2:两个复数
返回:运算后的复数
100个常用小程序(精心收集2)(2010-01-26 17:49:44)
转载标签: it 分类: C知识
60. 函数名:_Cdiv
功能:复数的除法运算
用法:Complex _Cdiv(Complex z1,Complex z2)
参数:z1,z2:两个复数
返回:运算后的复数
61. 函数名:_Cabs
功能:复数的模运算
用法:double _Cabs(Complex z)
参数:z:复数
返回:模
62. 函数名:_Croot
功能:复数的根运算
用法:void _Croot(Complex z1, int n, Complex *z)
参数:z1:复数,n:n次根,z:存放n个根
返回:无
63. 函数名:_Cpow
功能:复数的幂运算
用法:Complex _Cpow(Complex z1, double w)
参数:z1:复数,w:幂
第 22 页
新建 文本文档.txt
返回:复数的幂
64. 函数名:_LAG
功能:Lagrange插值计算
用法:double _LAG(double *x, double *y, double t, int n)
参数:x:插值点的横坐标表,y:插值点的纵坐标表,t:待求的插值点,n:
插值点数
返回:插值点的函数值
程序例:
#include "mylib.h"
void main()
{
int n;
double *x,*y,t,sum;
t=0.15;
n=6;
x=(double *)calloc(n,sizeof(double));
if(x==NULL) exit(1);
y=(double *)calloc(n,sizeof(double));
if(y==NULL) exit(1);
x[0]=0; x[1]=0.1; x[2]=0.195; x[3]=0.3; x[4]=0.401;
x[5]=0.5;
y[0]=0.39894; y[1]=0.39695; y[2]=0.39142; y[3]=0.38138;
y[4]=0.36812; y[5]=0.35206;
sum=_LAG(x,y,t,n);
printf("%lf\n",sum);
第 23 页
新建 文本文档.txt
free(x);
free(y);
}
65. 函数名:_NEWT
功能:Newton插值计算
用法:double _NEWT(double *x, double *y, int n, double t)
参数:x:插值点的横坐标表,y:插值点的纵坐标表,n:插值点数,t:待求
的插值点
返回:插值点的函数值
66. 函数名:_Mgauss
功能:Gauss消元法求解线性方程组
用法:int _Mgauss(double **a, double *b, int n, double ep)
参数:a:系数矩阵,b:方程值,n:方程个数,ep:精度
返回:是否有解
程序例:
#include "mylib.h"
void main()
{
int i,n;
double **a,*b,ep;
n=3;
a=_Alloc2(n,n);
b=(double *)calloc(n,sizeof(double));
if(b==NULL) exit(1);
第 24 页
新建 文本文档.txt
ep=1e-12;
a[0][0]=1; a[0][1]=-1; a[0][2]=1;
a[1][0]=5; a[1][1]=-4; a[1][2]=3;
a[2][0]=2; a[2][1]=1; a[2][2]=1;
b[0]=-4; b[1]=-12; b[2]=11;
if(!_Mgauss(a,b,n,ep))
{
printf("failed!\n");
exit(1);
}
for(i=0;i<=2;i++)
printf("x[%d] = %f\n",i+1,b[i]);
_Alloc2Free(a);
free(b);
}
67. 函数名:_Mgauss2
功能:求解矩阵相乘的逆运算(AX=B)
用法:int _Mgauss2(double **a, double **b, int n, int m, double ep)
参数:a:矩阵A,b:矩阵B,n:方程的阶数,m:右端列向量个数,ep:精度
返回:是否有解
68. 函数名:_Mdjn
功能:线性对称方程组解的分解法
用法:int _Mdjn(double **a, double **c, int n, int m)
第 25 页
新建 文本文档.txt
参数:a:矩阵A,c:矩阵C,n:方程的阶数,m:右端列向量个数
返回:是否有解
69. 函数名:_NOR
功能:正态分布函数(|x|<=3.5时用级数逼近,|x|>3.5时用连分式逼近)
用法:double _NOR(double x,int l)
参数:x:变量,l:l=1计算负无穷到x的积分,l=-1计算x到正无穷的积分
返回:积分值
程序例:
#include "mylib.h"
void main()
{
double x;
for(x=0;x<=5;x+=0.5)
printf("%e\t%e\t%e\n",x,_NOR(x,1),_NOR(x,-1));
}
70. 函数名:_Mdet
功能:求矩阵的行列式的值
用法:double _Mdet(double **a, int n)
参数:a:一个n*n的矩阵,n:行数
返回:行列式的值
71. 函数名:_Minv
功能:求矩阵的逆
用法:int _Minv(double t0, double *t, double *tt, int n, int m,
double **b)
第 26 页
新建 文本文档.txt
参数:
返回:
72. 函数名:_FFT
功能:FFT变换
用法:void _FFT(double *fr, double *fi, int n, int flag)
参数:fr:采样点的实数表,fi:采样点的虚数表,n:采样点个数,flag:
flag=0表示求Fourier变换,flag=1表示求逆Fourier变换
返回:无
头文件 head.h,放在include 里就可以调用了 %>
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define infinity INT_MAX
#define True 1
#define False 0
typedef double Graph ;
typedef int _bool ;
typedef struct complex Complex;
void Error(char *message);
void _Pause(void);
void _delay(double delaytime);
double _time(void);
double _dif(double start,double end);
double **_Alloc2(int r,int c);
int **_Alloc2_int(int r,int c);
void _Alloc2Free(double **x);
第 27 页
新建 文本文档.txt
void _dtoa(double value, char *string);
void _putstring(int x, int y, char *msg, int color);
long _fac(int n);
int _fac2(int n,int *a);
double _random(void);
int _rand(int seed);
double _avg(double a,double b);
double _sta(double mu,double sigma);
double _sta2(double mu,double sigma);
double _kai(int n);
double _tdis(int n);
double _F(int n1,int n2);
double _Poisson(int k,double lam);
double _mean(double *a,int start,int end);
double _variance(double *a,int start,int end);
double _Linear(double *x, double *y, double *a, double *b, int n);
double **_Adj_Form(double (*a)[3], int n, int m);
double _Floyd(int i,int j,int k,double **d);
double _Dijkstra(Graph **G,int n,int s,int t, int *path, int
*count);
double _0618(double (*f)(double x),double start,double end,double
eps);
int _2div(double (*f)(double x), double a, double b, double h,
double eps,
double *x, int n, int *m);
double _integral(double (*f)(double x),double start,double end,int
n);
double _integral2(double (*f)(double x),double start,double end,int
div);
long _comb(int n,int m);
long _rank(int n,int m);
void _allcomb_dg(int* ps, int* pe, int elems, int *buf, int bufsz,
int **comb, int* iCount);
void _allcomb(int *list, int n, int elems, int **comb);
void _allrank_dg(int m, int k, int s, int *a, int *flag, int
*iCount, int **rank);
void _allrank(int m, int **rank);
int _bolziman(double de,double t);
int _isprime(long p);
long _prime(int n);
第 28 页
新建 文本文档.txt
void _swapi(int *a,int *b);
void _swapl(long *a,long *b);
void _swapd(double *a,double *b);
void _inv(int *x,int n);
void _sort(double *x,int n);
long _max2(long n,long m);
long _min2(long n,long m);
double _max(double *array,int n,int *id);
double _min(double *array,int n,int *id);
long _GCD(long m,long n);
long _LCM(long m,long n);
void _initgraph(void);
void _setPlotdefault(void);
void _Plot(double (*f)(double x),double start,double end);
double _Line_equation(double x, double a, double b);
void _Fit(double *x, double *y, int n);
Complex _Cplus(Complex z1,Complex z2);
Complex _Cminus(Complex z1,Complex z2);
Complex _Cmul(Complex z1,Complex z2);
Complex _Cdiv(Complex z1,Complex z2);
double _Cabs(Complex z);
void _Croot(Complex z1, int n, Complex *z);
Complex _Cpow(Complex z1, double w);
double _LAG(double *x, double *y, double t, int n);
double _NEWT(double *x, double *y, int n, double t);
int _Mgauss(double **a, double *b, int n, double ep);
int _Mgauss2(double **a, double **b, int n, int m, double ep);
int _Mdjn(double **a, double **c, int n, int m);
double _NOR(double x,int l);
double _Mdet(double **a, int n);
int _Minv(double t0, double *t, double *tt, int n, int m, double
**b);
void _FFT(double *fr, double *fi, int n, int flag);
void Error(char *message)
{
clrscr();
fprintf(stderr,"Error: %s\n",message);
exit(1);
}
第 29 页
新建 文本文档.txt
void _Pause(void)
{
while(bioskey(1)==0) ;
}
void _delay(double delaytime)
{
long bios_time;
double start,end;
bios_time = biostime(0, 0L);
start = bios_time / CLK_TCK;
while(1)
{
bios_time = biostime(0, 0L);
end = bios_time / CLK_TCK;
if(end-start >= delaytime) return ;
}
}
double _time(void)
{
long bios_time;
double cur;
bios_time = biostime(0, 0L);
cur = bios_time / CLK_TCK;
return cur;
}
double _dif(double start,double end)
{
return end-start;
}
double **_Alloc2(int r,int c)
{
double *x,**y;
int n;
第 30 页
新建 文本文档.txt
x=(double *)calloc(r*c,sizeof(double));
y=(double **)calloc(r,sizeof(double *));
for(n=0;n<=r-1;n++)
y[n]=&x[c*n];
return y;
}
int **_Alloc2_int(int r,int c)
{
int *x,**y;
int n;
x=(int *)calloc(r*c,sizeof(int));
y=(int **)calloc(r,sizeof(int *));
for(n=0;n<=r-1;n++)
y[n]=&x[c*n];
return y;
}
void _Alloc2Free(double **x)
{
free(x[0]);
free(x);
}
void _dtoa(double value, char *string)
{
unsigned long wn,df;
char *str1,*str2,*str3,*str4;
str1=value<0.0?"-":"";
value=value<0.0?(-value):value;
wn=(unsigned long)(floor(value));
df=(unsigned long)(floor((value-wn)*1000));
str2=(char *)malloc(10*sizeof(char));
str4=(char *)malloc(10*sizeof(char));
ultoa(wn,str2,10);
str3=".";
ultoa(df,str4,10);
strcpy(string, str1);
strcat(string, str2);
strcat(string, str3);
第 31 页
新建 文本文档.txt
strcat(string, str4);
}
void _putstring(int x, int y, char *msg, int color)
{
int len;
const int sidex=8, sidey=10;
setcolor(color);
len=strlen(msg);
x=x-len*sidex;
y=y-sidey;
outtextxy(x,y,msg);
}
long _fac(int n)
{
if(n<0||n>12) Error("n is not valid in _fac!");
if(n==0||n==1) return 1;
return _fac(n-1)*n;
}
int _fac2(int n,int *a)
{
int m,i,j,c,t;
a[0]=1;
m=1;
for(i=2;i<=n;i++)
{
for(c=0,j=0;j12||k<0) Error("k is not valid in _Poisson!");
return pow(lam,k)*exp(-lam)/_fac(k);
}
double _mean(double *a,int start,int end)
{
int i;
double sum=0.0;
if(start<0||end-start<0)
Error("Start is larger than end , or start is not valid in
_mean!");
for(i=start;i<=end;i++)
sum=sum+a[i];
return sum/(end-start+1);
}
double _variance(double *a,int start,int end)
{
double _mean(double *a,int start,int end);
int i;
double mean,sum=0.0;
mean=_mean(a,start,end);
for(i=start;i<=end;i++)
sum=sum+(a[i]-mean)*(a[i]-mean);
return sum/(end-start);
}
double _Linear(double *x, double *y, double *a, double *b, int n)
{
double Sxx,Syy,Sxy,meanx,meany,Qe;
int i;
if(n<=2) Error("n too small in _Linear!");
meanx=_mean(x,0,n-1);
第 35 页
新建 文本文档.txt
meany=_mean(y,0,n-