C语言常用代码Word文档下载推荐.docx

上传人:b****1 文档编号:15291022 上传时间:2022-10-29 格式:DOCX 页数:69 大小:31.73KB
下载 相关 举报
C语言常用代码Word文档下载推荐.docx_第1页
第1页 / 共69页
C语言常用代码Word文档下载推荐.docx_第2页
第2页 / 共69页
C语言常用代码Word文档下载推荐.docx_第3页
第3页 / 共69页
C语言常用代码Word文档下载推荐.docx_第4页
第4页 / 共69页
C语言常用代码Word文档下载推荐.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

C语言常用代码Word文档下载推荐.docx

《C语言常用代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言常用代码Word文档下载推荐.docx(69页珍藏版)》请在冰豆网上搜索。

C语言常用代码Word文档下载推荐.docx

n-i-1;

m2++)

}

voidprint(int**a,intn)

n;

for(intj=0;

j<

j++)

cout<

<

a[i][j]<

"

\t"

;

cout<

\n"

voidmain()

{

int**a;

intn;

请输入N"

endl;

cin>

>

a=newint*[n];

//申请一个N行N列的数组

for(inti1=0;

i1<

i1++)

a[i1]=newint[n];

i++)//给数组初始化

a[i][j]=0;

fullxunhuan(a,n);

print(a,n);

 

ACM小组内部预定函数

数学问题:

1.精度计算——大数阶乘

2.精度计算——乘法(大数乘小数)

3.精度计算——乘法(大数乘大数)

4.精度计算——加法

5.精度计算——减法

6.任意进制转换

7.最大公约数、最小公倍数

8.组合序列

9.快速傅立叶变换(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.筛法素数产生器

7.判断一个数是否素数

图论:

1.Prim算法求最小生成树

2.Dijkstra算法求单源最短路径

3.Bellman-ford算法求单源最短路径

4.Floyd算法求每对节点间最短路径

排序/查找:

1.快速排序

2.希尔排序

3.选择法排序

4.二分查找

数据结构:

1.顺序队列

2.顺序栈

3.链表

4.链栈

5.二叉树

一、数学问题

语法:

intresult=factorial(intn);

参数:

n:

n的阶乘

返回值:

阶乘结果的位数

注意:

本程序直接输出n!

的结果,需要返回结果请保留longa[]

需要math.h

源程序:

intfactorial(intn)

longa[10000];

inti,j,l,c,m=0,w;

a[0]=1;

for(i=1;

=n;

{

c=0;

for(j=0;

=m;

a[j]=a[j]*i+c;

c=a[j]/10000;

a[j]=a[j]%10000;

}

if(c>

0){m++;

a[m]=c;

}

w=m*4+log10(a[m])+1;

printf("

\n%ld"

a[m]);

for(i=m-1;

i>

=0;

i--)printf("

%4.4ld"

a[i]);

returnw;

mult(charc[],chart[],intm);

c[]:

被乘数,用字符串表示,位数不限

t[]:

结果,用字符串表示

m:

乘数,限定10以内

null

需要string.h

voidmult(charc[],chart[],intm)

inti,l,k,flag,add=0;

chars[100];

l=strlen(c);

for(i=0;

l;

s[l-i-1]=c[i]-'

0'

k=s[i]*m+add;

if(k>

=10){s[i]=k%10;

add=k/10;

flag=1;

}else{s[i]=k;

flag=0;

add=0;

if(flag){l=i+1;

s[i]=add;

}elsel=i;

t[l-1-i]=s[i]+'

t[l]='

\0'

mult(chara[],charb[],chars[]);

a[]:

b[]:

乘数,用字符串表示,位数不限

空间复杂度为o(n^2)

voidmult(chara[],charb[],chars[])

inti,j,k=0,alen,blen,sum=0,res[65][65]={0},flag=0;

charresult[65];

alen=strlen(a);

blen=strlen(b);

alen;

for(j=0;

blen;

j++)res[i][j]=(a[i]-'

)*(b[j]-'

);

for(i=alen-1;

i--)

for(j=blen-1;

j>

j--)sum=sum+res[i+blen-j-1][j];

result[k]=sum%10;

k=k+1;

sum=sum/10;

for(i=blen-2;

=i;

j++)sum=sum+res[i-j][j];

if(sum!

=0){result[k]=sum;

k=k+1;

k;

i++)result[i]+='

for(i=k-1;

i--)s[i]=result[k-1-i];

s[k]='

while

(1)

if(strlen(s)!

=strlen(a)&

&

s[0]=='

strcpy(s,s+1);

else

break;

add(chara[],charb[],chars[]);

voidadd(chara[],charb[],charback[])

inti,j,k,up,x,y,z,l;

char*c;

if(strlen(a)>

strlen(b))l=strlen(a)+2;

elsel=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>

if(i<

0)x='

elsex=a[i];

if(j<

0)y='

elsey=b[j];

z=x-'

+y-'

if(up)z+=1;

if(z>

9){up=1;

z%=10;

}elseup=0;

c[k++]=z+'

i--;

j--;

if(up)c[k++]='

1'

i=0;

c[k]='

for(k-=1;

k>

k--)

back[i++]=c[k];

back[i]='

sub(chars1[],chars2[],chart[]);

s1[]:

被减数,用字符串表示,位数不限

s2[]:

减数,用字符串表示,位数不限

默认s1>

=s2,程序未处理负数情况

voidsub(chars1[],chars2[],chart[])

inti,l2,l1,k;

l2=strlen(s2);

l1=strlen(s1);

t[l1]='

l1--;

for(i=l2-1;

i--,l1--)

if(s1[l1]-s2[i]>

=0)

t[l1]=s1[l1]-s2[i]+'

t[l1]=10+s1[l1]-s2[i]+'

s1[l1-1]=s1[l1-1]-1;

k=l1;

while(s1[k]<

0){s1[k]+=10;

s1[k-1]-=1;

k--;

while(l1>

=0){t[l1]=s1[l1];

loop:

if(t[0]=='

l1=strlen(s1);

l1-1;

i++)t[i]=t[i+1];

t[l1-1]='

gotoloop;

if(strlen(t)==0){t[0]='

t[1]='

conversion(chars1[],chars2[],longd1,longd2);

s[]:

原进制数字,用字符串表示

转换结果,用字符串表示

d1:

原进制数

d2:

需要转换到的进制数

高于9的位数用大写'

A'

~'

Z'

表示,2~16位进制通过验证

voidconv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

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

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