C语言重点编程.docx_第1页
C语言重点编程.docx_第2页
C语言重点编程.docx_第3页
C语言重点编程.docx_第4页
C语言重点编程.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

循环1. 小算法素数int prime(int x) int i; for(i=2;i=x/2;i+) if(x%i=0) break; if(i=x/2) return 0; else return 1;水仙花数 g=x%10; s=x/10%10;b=x/100%10;逆序数 回文数 数的拆分合成逆序:int f(int x) int y=0,f=1; if(x0) f=-1; x=-x; while(x) y=y*10+x%10; x/=10; return y*f;完数 s=1; for(i=2;i=x/2;i+) if(x%i=0) s+=i; return s;最大公约数和最小公倍数 void fun(int m,int n,int *pgy,int *pgb) int r;*pgb=m*n;while(r=m%n)!=0) m=n; n=r;*pgy=n; *pgb=*pgb/*pgy; 一维数组算法最值-注意初值int fmax(int a,int n) int i,mi=0; for(i=0;iami) mi=i; return mi;逆置void fun(int a,int n) int *b,i,j;b=(int *)malloc(n*sizeof(int);for(i=n-1,j=0;i=0;i-,j+) bj=ai;for(i=0;in;i+) ai=bi;void fun2(int a,int n) int i=0,j=n-1,t; while(ij)t=ai;ai=aj;aj=t;i+,j-;void fun3(int a,int n) int i=0,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t;查找1. 顺序查找数值型:for(i=0;in;i+) if(ai=x) break;字符串:i=0; while(stri) if(stri=ch) break;2. 二分查找int bin_search(int a,int n) int *pl,*ph,*pm; pl=a,ph=a+n-1; while(pl*pm) pl=pm+1;else if(x=i;j-) strj+1=strj; stri= ; i+=2; else i+; 2. 按序插入void insert(int a,int n,int x)/*a数组中原有n个递增元素*/ int i=n-1; while(aix&i=0) ai+1=ai; i-; ai+1=x; 删除1. 位置删除 for(i=p+1;in;i+) ai-1=ai;2.按值删除int del(char str) /*返回删除空格的个数*/ int n=0,i=0,j; while(stri!=0) if(stri= ) /* for(j=i+1;strj;j+) strj-1=strj; strj-1=0;*/ for(j=i;strj;j+) strj=strj+1;/*注意,此处不能i自加*/ else i+; 方法二 两套下标int del(char str) /*返回删除空格的个数*/ int i=0,j=0,n=0; while(stri) if(stri!=) strj+=stri+; else i+;n+; strj=0; return n;排序1. 交换排序void change_sort(int a,int n) int i,j,t;for(i=0;in-1;i+) for(j=i+1;jn;j+) if(ajai) 交换ai aj 2. 选择排序void select_sort(int a,int n) int i,j,k,t;for(i=0;in-1;i+) /* 1.找最小元素下标k*/k=i; for(j=i+1;jn;j+) if(ajak) k=j; /* 2.交换最小元素和ai*/ if(k!=i)交换ak ai 3. 冒泡排序 /*相邻比较*/void bubble_sort(int a,int n) int i,j,t,noswap;for(i=0;in-1;i+) noswap=1; for(j=0;jaj+1)交换;noswap=0; if(noswap) break; 归并int fun(int a,int na,int b,int nb,int c) int i=0,j=0,k=0; while(ina&jnb) if(aibj) ck+=bj+; else ck+=ai+;j+; while(ina) ck+=ai+; while(jnb) ck+=bj+; return k;二维数组上三角 for(i=0;iN;i+) for(j=i;jN;j+)下三角 for(i=0;iN;i+) for(j=0;j=i;j+)转置 void fun(int aN) int i,j,t; for(i=0;iN;i+) for(j=i;jN;j+) 交换 aij aji 最值字符串和字符数组1)strlen(str) 注意和sizeof(str)比较int length(char *str) int n=0; while(*str)n+; str+; return n;int length(char *str) char *ps=str; while(*ps)ps+; return ps-str;2)strcpy(str1,str2)char *copy(char *s1,char *s2) int i=0; while(s2i) s1i=s2i;i+; s1i=0; return s1;3)strcat(str1,str2)char *cat(char *s1,char *s2) int i=0,j=0; /*先找到s1中0的位置*/ while(s1i) i+; /*然后再将s2从此处拷贝*/ while(s2j) s1i+=s2j+; s1i=0; return s1;4) strcmp(str1,str2)int cmp(char *s1,char *s2) int i=0;while(s1i=s2i&s1i&s2i) i+;return s1i-s2i;字符串算法1. 多个字符串排序void sort(char a20,int n) int i,j; char t20; for(i=0;in-1;i+)for(j=i+1;j0) strcpy(t,ai);strcpy(ai,aj);strcpy(aj,t); 2. 字符串模式匹配int find(char *s,char *t) int i=0,j=0; while(si&tj) if(si=tj) i+,j+; else i=i-j+1,j=0; if(!tj) return i-j; 返回下标 else return -1;3.统计单词个数int count(char *s) int i=0,n=0,flag=1; while(si) if(isalpha(si) if(flag=1) n+,flag=0; else flag=1; i+; return n;统计整数的个数int count(char *s,int *a) int i=0,j=-1,n=0,flag=1; while(si) if(isdigit(si) if(flag=1) j+;bj=si-0; flag=0; else bj=bj*10+si-0; else flag=1; i+; return j+1;main() int a=3,b=4;swap(&a,&b);printf(“a=%d,b=%d”,a,b);void swap(int *x,int y) int *t;t=x,x=y,y=t;void swap(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论