ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:86.66KB ,
资源ID:17102291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17102291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言常用代码Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言常用代码Word下载.docx

1、给数组初始化ACMJ、组内部预定函数数学问题:1.精度计算大数阶乘2.精度计算乘法(大数乘小数)3.精度计算 乘法(大数乘大数)4.精度计算一一加法5.精度计算一一减法6任意进制转换7.最大公约数、最小公倍数8.组合序列9.快速傅立叶变换(FFT10.Ronberg算法计算积分11.行列式计算12.求排列组合数字符串处理:1.字符串替换2.字符串查找3.字符串截取计算几何:1.叉乘法求任意多边形面积2.求三角形面积3.两矢量间角度4.两点距离(2D 3D)5.射向法判断点是否在多边形内部6.判断点是否在线段上7.判断两线段是否相交8.判断线段与直线是否相交9.点到线段最短距离10.求两直线的交

2、点11.判断一个封闭图形是凹集还是凸集12.Graham扫描法寻找凸包数论:1.x的二进制长度2.返回x的二进制表示中从低到高的第3.模取幕运算4.求解模线性方程5.求解模线性方程组(中国余数定理)6.筛法素数产生器7.判断一个数是否素数图论:1.Prim算法求最小生成树2.Dijkstra 算法求单源最短路径3.Bellma n-ford 算法求单源最短路径4.Floyd算法求每对节点间最短路径排序/查找:1.快速排序2.希尔排序3.选择法排序4.二分查找数据结构:1.顺序队列2.顺序栈3.链表4.链栈5.二叉树一、数学问题1.精度计算 大数阶乘语法:int result=factorial

3、( intn);参数:n: n的阶乘返回值: 阶乘结果的位数本程序直接输出n!的结果,需要返回结 果请保留long a需要math.h源程序:int factorial( int n)long a10000;int i,j,l,c,m=0,w;i 位 a0=1;for(i=1;=n ; c=0;for(j=0;=m;j+) aj=aj*i+c;c=aj/10000;aj=aj%10000;3. 精度计算乘法(大数乘大数) mult(char a,char b,char s);if(c0) m+;am=c;a : 被乘数, 用字符串表示, 位数不限 b : 乘数,用字符串表示,位数不限w=m*4

4、+log10(am)+1;t : 结果,用字符串表示printf(n%ld,am); nullfor(i=m-1;i=0;i-)注意:%4.4ld,ai);空间复杂度为o(n A2)return w;需要 string.hvoid mult(char a,char b,char2. 精度计算乘法(大数乘小数)s) mult(char c,char t,int m);intc : 被乘数, 用字符串表示,位数不限i,j,k=0,alen,blen,sum=0,res6565=0,flag=0;m: 乘数,限定 10 以内char result65;alen=strlen(a);blen=strl

5、en(b);for (i=0;alen;for (j=0;blen;resij=(ai-0)*(bj-);void mult(char c,char t,int m) int i,l,k,flag,add=0;for (i=alen-1;for (j=blen-1;jj-)char s100;sum=sum+resi+blen-j-1j;l=strlen(c);resultk=sum%10;l;k=k+1;sl-i-1=ci-sum=sum/10;for (i=blen-2;k=si*m+add;if(k=10)=i;si=k%10;add=k/10;flag=1;elsesum=sum+re

6、si-jj;si=k;flag=0;add=0;if (flag) l=i+1;si=add;l=i;if (sum!=0) resultk=sum;tl-1-i=si+k;i+) resulti+=tl=0for (i=k-1;si=resultk-1-i;sk=while(1)(strlen(s)!=strlen(a)&s0=) strcpy(s,s+1);break;4.精度计算加法 add(char a,char b,char s); 乘数,用字符串表示,位数不限 t : 结果,用字符串表示 返回值:void add(char a,char b,char back)int i,j,k,

7、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|jif(i0) x= else x=ai;if(j9) up=1;z%=10; else up=0;ck+=z+i-;j-;if(up) ck+=1i=0;ck=for(k-=1;kk-)backi+=ck;backi=5.精度计算减法sub(char s1,char s2,char t

8、);s1 : 被减数, 用字符串表示, 位数不限s2 : 减数,用字符串表示,位数不限默认 s 1 =s2 ,程序未处理负数情况void sub(char s1,char s2,char t)int i,l2,l1,k;l2=strlen(s2);l1=strlen(s1);tl1=l1-;for (i=l2-1;i-,l1-)if (s1l1-s2i=0) tl1=s1l1-s2i+tl1=10+s1l1-s2i+ s1l1-1=s1l1-1-1;k=l1;while(s1k=0) tl1=s1l1;loop:if (t0=) l1=strlen(s1); for(i=0;l1-1;ti=t

9、i+1; tl1-1= goto loop; if (num=0) break; i+;i/2;c=s2j;s2j=si-j;s2i-j=c;s2i+1=(strlen(t)=0)t0=t1=7. 最大公约数、最小公倍数语 法 : resulet=hcf(int a,int b) 、6. 任意进制转换result=lcd(int a,int b)语法: conversion(char s1,chars2,long d1,long d2);a: int a ,求最大公约数或最小公倍数b: int b ,求最大公约数或最小公倍数s :原进制数字,用字符串表示 返回最大公约数( hcf )或最转换结

10、果,用字符串表示小公倍数( lcd )d1:原进制数d2:需要转换到的进制数lcd 需要连同 hcf 使用nullint hcf(int a,int b)高于9的位数用大写 AZ表示,216 位进制通过验证int r=0;while(b!voidconversion( char s,chars2,long d1,long d2)long i,j,t,num;char c;num=0;si!=if (si) t=si- else t=si-A+10;num=num*d1+t;t=num%d2;if (t=9) s2i=t+ else s2i=t+-10;num/=d2;return(u*v/h)

11、; m_of_n(int m, int n1, int m1, int* a, int head) 组合数 C 的上参数n1: 组合数 C 的下参数m1: 组合数 C 的上参数,递归之用*a:1n的整数序列数组head:头指针返回值:注意:*a需要自行产生初始调用时, m=m、1 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=n1)for(i=0;m;i+) coutai / 输出

12、序列nreturn;l : 逻辑开关, 0 FFT,1 ifFTil : 逻辑开关, 0 输出按实部 /虚部; 1 输出按模 / 幅角需要 math.h 源程序:void kkfft(pr,pi,n,k,fr,fi,l,il)int n,k,l,il;double pr,pi,fr,fi;int it,m,is,i,j,nv,l0;double p,q,s,vr,vi,poddr,poddi; for (it=0; it=n-1; it+)m=it; is=0; i=k-1; i+)j=m/2; is=2*is+(m-2*j); m=j;frit=pris; fiit=piis;m=m/2;

13、nv=2*nv;for (it=0;=(m-1)*nv;it=it+nv) j=(nv/2)-1; j+)p=prm*j*frit+j+nv/2;q=pim*j*fiit+j+nv/2;s=prm*j+pim*j;s=s*(frit+j+nv/2+fiit+j+nv/2);poddr=p-q;poddi=s-p-q;frit+j+nv/2=frit+j-poddr;fiit+j+nv/2=fiit+j-poddi;frit+j=frit+j+poddr;fiit+j=fiit+j+poddi;if (l!fri=fri/(1.0*n);fii=fii/(1.0*n);if (il!pri=sq

14、rt(fri*fri+fii*fii);(fabs(fri)pii=90.0;else pii=-90.0;pii=atan(fii/fri)*360.0/6.283185306;10.Ronberg 算法计算积分 result=integral(double a,double b);a : 积分上限b : 积分下限function f : 积分函数 f在(a,b )之间的积分值function f(x) 需要自行修改,程序中 用的是 sina(x)/x需要 math.h 默认精度要求是 1e-5 源程序:double f(double x) return sin(x)/x; / 在这里插入被

15、积函数 double integral(double a,double b)double h=b-a;double t1=(1+f(b)*h/2.0;int k=1;double r1,r2,s1,s2,c1,c2,t2; loop:double s=0.0;double x=a+h/2.0; while(x1e-5) r1=r2;c1=c2;return r2; result=js(int s,int n) 参数:s : 行列式存储数组 n: 行列式维数,递归用 返回值: 行列式值函数中常数 N 为行列式维度, 需自行定 义int js(s,n)int sN,n;int z,j,k,r,to

16、tal=0;int bNN;/*bNN 用于存放,在矩阵 sNN 中元素 s0 的余子式 */if(n2)for(z=0;zz+)n-1;j+) for(k=0;k=z)bjk=sj+1k+1; else bjk=sj+1k;if(z%2=0)r=s0z*js(b,n-1); /* 递归调用 */ elser=(-1)*s0z*js(b,n-1);total=total+r;else if(n=2)total=s00*s11-s01*s10Jreturn total; result=P(long n,long m); / result=long C(long n,long m); 排列组合的上

17、系数n: 排列组合的下系数 返回值: 排列组合数符合数学规则:mJ nlong P(long n,long m)long p=1;while(m!p*=n;n-;m-;return p;long C(long n,long m)long i,c=1;i=m;while(i!c*=n;c/=m;return c;二、字符串处理 replace(char str,char key,char swap);str : 在此源字符串进行替换操作 key : 被替换的字符串,不能为空串 swap : 替换的字符串,可以为空串, 为空串表示在源字符中删除 key 返回值:默认 str 长度小于 1000,如

18、否,重新 设定设定 tmp 大小void replace(char str,charkey,char swap)int l1,l2,l3,i,j,flag;char tmp1000;l1=strlen(str);l2=strlen(key);l3=strlen(swap);=l1-l2;l2;if (stri+j!=keyj)flag=0;if (flag)strcpy(tmp,str);strcpy(&tmpi,swap);tmpi+l3,&stri+l2);strcpy(str,tmp);i+=l3-1; result=strfind(char str,char key); 在此源字符串进

19、行查找操作 key : 被查找的字符串,不能为空串 返回值: 如果查找成功,返回 key 在 str 中第一次出现的位置,否则返回 -1int strfind(char str,char key)int l1,l2,i,j,flag; l1=strlen(str);i+) flag=1;=keyj) flag=0;if (flag) return i;return -1; mid(char str,int start,int len,char strback) 操作的目标字符串start : 从第 start 个字符串开始, 截取长 度为 len 的字符len : 从第 start 个字符串开始, 截取长度为 len 的字符strback : 截取的到的字符 0:超出字符串长度,截取失败; 1:截取成功需要 string.h 源程序:int mid(char str,int start,int len,char strback) int l,i,k=0; l=strlen(str);if (start+lenl) return 0;for (i=start;start+len;i+) strbackk+=stri;strbackk=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1