首页 100条小程序

100条小程序

举报
开通vip

100条小程序 新建 文本文档.txt 100个常用小程序(精心收集1)(2010-01-26 17:43:24) 转载标签: it 分类: C知识 这100个小程序是c语言头文件,以下是这些常用小程序调用方法说明: <% 1. 函数名:Error 功能:捕捉错误,结束程序 用法:void Error(char *message) 参数:message:错误信息 返回:无 2. 函数名:_Pause 功能:等待按键 用法:void _Pause(void) 参数:无 返回:无 3. 函数名:_...

100条小程序
新建 文本文档.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-
本文档为【100条小程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_702760
暂无简介~
格式:pdf
大小:117KB
软件:PDF阅读器
页数:40
分类:
上传时间:2012-12-03
浏览量:75