C语言常用代码23页word.doc
《C语言常用代码23页word.doc》由会员分享,可在线阅读,更多相关《C语言常用代码23页word.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言常用代码【精品文档】第 23 页#includeusing namespace std;void fullxunhuan(int *a,int n)int t=0;int m1,m2;if(n%2!=0) n+;for(int i=0;in%2;i+)for(m1=i,m2=n-i-1;m1i;m2-)am1m2=t%n+1;t+;for(;m1i;m1-)am1m2=t%n+1;t+;for(;m2n-i-1;m2+)am1m2=t%n+1;t+;void print(int *a,int n)for(int i=0;in;i+)for(int
2、j=0;jn;j+)coutaijt; coutn;void main()int *a;int n;cout请输入Nn; a=new int *n;/申请一个N行N列的数组for(int i1=0;i1n;i1+)ai1=new intn;for(int i=0;in;i+)/给数组初始化for(int j=0;jn;j+)aij=0;fullxunhuan(a,n); print(a,n);ACM小组内部预定函数数学问题: 1.精度计算大数阶乘2.精度计算乘法(大数乘小数)3.精度计算乘法(大数乘大数)4.精度计算加法5.精度计算减法6.任意进制转换7.最大公约数、最小公倍数8.组合序列9.
3、快速傅立叶变换(FFT) 10.Ronberg算法计算积分11.行列式计算12.求排列组合数字符串处理: 1.字符串替换2.字符串查找3.字符串截取计算几何: 1.叉乘法求任意多边形面积2.求三角形面积3.两矢量间角度4.两点距离(2D、3D)5.射向法判断点是否在多边形内部6.判断点是否在线段上7.判断两线段是否相交8.判断线段与直线是否相交9.点到线段最短距离10.求两直线的交点11.判断一个封闭图形是凹集还是凸集12.Graham扫描法寻找凸包数论: 1.x的二进制长度2.返回x的二进制表示中从低到高的第i位3.模取幂运算4.求解模线性方程5.求解模线性方程组(中国余数定理)6.筛法素数
4、产生器7.判断一个数是否素数图论: 1.Prim算法求最小生成树2.Dijkstra算法求单源最短路径3.Bellman-ford算法求单源最短路径4.Floyd算法求每对节点间最短路径排序/查找: 1.快速排序2.希尔排序3.选择法排序4.二分查找 数据结构: 1.顺序队列2.顺序栈3.链表4.链栈5.二叉树一、数学问题1.精度计算大数阶乘语法:int result=factorial(int n);参数:n:n 的阶乘返回值:阶乘结果的位数注意: 本程序直接输出n!的结果,需要返回结果请保留long a 需要 math.h源程序: int factorial(int n)long a100
5、00;int i,j,l,c,m=0,w; a0=1; for(i=1;i=n;i+) c=0; for(j=0;j0) m+;am=c; w=m*4+log10(am)+1;printf(n%ld,am); for(i=m-1;i=0;i-) printf(%4.4ld,ai);return w;2.精度计算乘法(大数乘小数)语法:mult(char c,char t,int m);参数:c:被乘数,用字符串表示,位数不限t:结果,用字符串表示m:乘数,限定10以内返回值:null注意: 需要 string.h源程序: void mult(char c,char t,int m) int i
6、,l,k,flag,add=0; char s100; l=strlen(c); for (i=0;il;i+) sl-i-1=ci-0; for (i=0;i=10) si=k%10;add=k/10;flag=1; else si=k;flag=0;add=0; if (flag) l=i+1;si=add; else l=i; for (i=0;il;i+) tl-1-i=si+0; tl=0;3.精度计算乘法(大数乘大数)语法:mult(char a,char b,char s);参数:a:被乘数,用字符串表示,位数不限b:乘数,用字符串表示,位数不限t:结果,用字符串表示返回值:nu
7、ll注意: 空间复杂度为 o(n2) 需要 string.h源程序: void mult(char a,char b,char s) int i,j,k=0,alen,blen,sum=0,res6565=0,flag=0; char result65; alen=strlen(a);blen=strlen(b); for (i=0;ialen;i+) for (j=0;j=0;i-) for (j=blen-1;j=0;j-) sum=sum+resi+blen-j-1j; resultk=sum%10; k=k+1; sum=sum/10; for (i=blen-2;i=0;i-) fo
8、r (j=0;j=i;j+) sum=sum+resi-jj; resultk=sum%10; k=k+1; sum=sum/10; if (sum!=0) resultk=sum;k=k+1; for (i=0;i=0;i-) si=resultk-1-i; sk=0; while(1) if (strlen(s)!=strlen(a)&s0=0) strcpy(s,s+1); else break;4.精度计算加法语法:add(char a,char b,char s);参数:a:被乘数,用字符串表示,位数不限b:乘数,用字符串表示,位数不限t:结果,用字符串表示返回值:null注意: 空
9、间复杂度为 o(n2) 需要 string.h源程序: void add(char a,char b,char back) int i,j,k,up,x,y,z,l; char *c; if (strlen(a)strlen(b) l=strlen(a)+2; else l=strlen(b)+2; c=(char *) malloc(l*sizeof(char); i=strlen(a)-1; j=strlen(b)-1; k=0;up=0; while(i=0|j=0) if(i0) x=0; else x=ai; if(j9) up=1;z%=10; else up=0; ck+=z+0
10、; i-;j-; if(up) ck+=1; i=0; ck=0; for(k-=1;k=0;k-) backi+=ck; backi=0;5.精度计算减法语法:sub(char s1,char s2,char t);参数:s1:被减数,用字符串表示,位数不限s2:减数,用字符串表示,位数不限t:结果,用字符串表示返回值:null注意: 默认s1=s2,程序未处理负数情况 需要 string.h源程序: void sub(char s1,char s2,char t) int i,l2,l1,k; l2=strlen(s2);l1=strlen(s1); tl1=0;l1-; for (i=l
11、2-1;i=0;i-,l1-) if (s1l1-s2i=0) tl1=s1l1-s2i+0; else tl1=10+s1l1-s2i+0; s1l1-1=s1l1-1-1; k=l1; while(s1k=0) tl1=s1l1;l1-;loop: if (t0=0) l1=strlen(s1); for (i=0;il1-1;i+) ti=ti+1; tl1-1=0; goto loop; if (strlen(t)=0) t0=0;t1=0;6.任意进制转换语法:conversion(char s1,char s2,long d1,long d2);参数:s:原进制数字,用字符串表示s
12、2:转换结果,用字符串表示d1:原进制数d2:需要转换到的进制数返回值:null注意: 高于9的位数用大写AZ表示,216位进制通过验证源程序: void conversion(char s,char s2,long d1,long d2) long i,j,t,num; char c; num=0; for (i=0;si!=0;i+) if (si=0) t=si-0; else t=si-A+10; num=num*d1+t; i=0; while(1) t=num%d2; if (t=9) s2i=t+0; else s2i=t+A-10; num/=d2; if (num=0) br
13、eak; i+; for (j=0;ji/2;j+) c=s2j;s2j=si-j;s2i-j=c; s2i+1=0;7.最大公约数、最小公倍数语法:resulet=hcf(int a,int b)、result=lcd(int a,int b)参数:a:int a,求最大公约数或最小公倍数b:int b,求最大公约数或最小公倍数返回值:返回最大公约数(hcf)或最小公倍数(lcd)注意: lcd 需要连同 hcf 使用源程序: int hcf(int a,int b) int r=0; while(b!=0) r=a%b; a=b; b=r; return(a);lcd(int u,int
14、v,int h) return(u*v/h);8.组合序列语法:m_of_n(int m, int n1, int m1, int* a, int head)参数:m:组合数C的上参数n1:组合数C的下参数m1:组合数C的上参数,递归之用*a:1n的整数序列数组head:头指针返回值:null注意: *a需要自行产生 初始调用时,m=m1、head=0 调用例子:求C(m,n)序列:m_of_n(m,n,m,a,0);源程序: void m_of_n(int m, int n1, int m1, int* a, int head) int i,t; if(m1n1) return; if(m1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 常用 代码 23 word
限制150内